Topic: Диалоговые окна
Обсуждение статьи Диалоговые окна с AlertDialog
Все вопросы проплачены кошками - всемирно известными производителями котят
You are not logged in. Please login or register.
Для регистрации на форуме следует написать мне письмо. В ответе я напишу правильный ответ для прохождения регистрации.
Форум Александра Климова → Android → Диалоговые окна
В статье не указано, как объявлять класс диалога в манифесте. <activity></activity> не работает.
Без объявления в манифесте приложение крашит при попытке вызвать диалоговое окно.
А почему вы решили, что это связано с отсутствием записи в манифесте?
Симптомы те же, что и при попытке вызвать Activity, не указанную в манифесте. Других неисправностей я обнаружить не смог.
Не надо обвинять диалоговые окна, они вам ничего плохого не сделали. Крах приложения - это не симптом, а лишь указание, что в коде ошибка.
А вот такой вопрос:
Можно ли сделать так, чтобы вместо надписей в диалоговом окне были иконки?
В смысле хочу сделать диалоговое окно типа разобранного в примере setSingleChoiceItems , но надписи мне не нужны, а иконки готовы
И может быть даже в несколько столбцов эти иконки
или, как вариант, диалог обыкновенный, без радиобаттонов или чекбаттонов, но вместо кнопок-надписей иконки (трех мало, мне штук 12 надо)
(интерфнейс для ввода шахматной позиции пытаюсь придумать)
В этом уроке обсуждается определенный вид окна. В вашем случае нужно другое диалоговое окно со своей разметкой.
А как сделать модльный диалог? Я вот просомтрел обе статьи (в том числе старую) и при помощи тостов понял, что после всяких там showDialog или myDialogFragment.show все продолжается, а не ждется, когда пользователь скажет ок-кансел
В смысле, есть введенные как-то данные, нажимается кнопка, по этим данным у машины есть вопросы, которые она очевидным образом спрашивает пользователя диалогом. Разумеется, пока человек на это не ответит, продолжать вычисления бессмысленно...
Прошлый вопрос, ладно сложно, так сложно, потом переделаю, сделал ввод позиции в виде выпадающих менюшек словами, не картинки пока и ладно, потом буду картинки осваивать, написал уже всю шахматную логику, осталось начатьтестировать, но шахматная позиция не определяется полностью рисунком, надо бы диалогами поспрашивать про флаги рокировок, какие пешки можно брать следующим ходом на проходе, а тут встал...
Добрый день. Непонятное что-то происходит с setCancelable() - у меня диалог закрывается независимо от переданного в метод значения... В смысле, если помимо диалога пальцем ляпнуть, в затененную активность.
Порылся по исходникам, нашел такое:
(Dialog.java, строки 654-671)
/**
* Called when a touch screen event was not handled by any of the views
* under it. This is most useful to process touch events that happen outside
* of your window bounds, where there is no view to receive it.
*
* @param event The touch screen event being processed.
* @return Return true if you have consumed the event, false if you haven't.
* The default implementation will cancel the dialog when a touch
* happens outside of the window bounds.
*/
public boolean onTouchEvent(@NonNull MotionEvent event) {
if (mCancelable && mShowing && mWindow.shouldCloseOnTouch(mContext, event)) {
cancel();
return true;
}
return false;
}
Исходя из условия в if получается, что mCancelable=true как раз для закрытия диалога... Становится вообще непонятно, как это действует...
Александр, можете пояснить?
я давно не использовал диалоговые окна, подробностей не помню. Кстати, попробуйте еще метод dialog.setCanceledOnTouchOutside(false);
Александр,
Да, спасибо, с этим методом работает корректно.
Здравствуйте, Александр! Не могли бы вы показать весь код главной активности или помочь разобраться с моим? У меня что-то не вяжется. Вот скрин с моим кодом и ошибкой: https://yadi.sk/i/cm_CHPRu3QwEoR .
Скорее все вы неправильно написали код для MyDialogFragment. Ничего не пропустили?
Да нет, вроде ничего не пропустил. Даже копипастить пробовал, ничего не меняется.
Да пожалуйста:
package com.example.andrei.alertdialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.DialogFragment;
import android.support.v7.app.AlertDialog;
import android.widget.Toast;
public class MyDialogFragment extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
String title = "Выбор есть всегда";
String message = "Выбери пищу";
String button1String = "Вкусная пища";
String button2String = "Здоровая пища";
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle(title); // заголовок
builder.setMessage(message); // сообщение
builder.setPositiveButton(button1String, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Toast.makeText(getActivity(), "Вы сделали правильный выбор",
Toast.LENGTH_LONG).show();
}
});
builder.setNegativeButton(button2String, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Toast.makeText(getActivity(), "Возможно вы правы", Toast.LENGTH_LONG)
.show();
}
});
builder.setCancelable(true);
return builder.create();
}
}
Вы используете разные библиотеки. DialogFragment у вас от android.support.v4, а FragmentManager от android.app. Я в какой-то статье предупреждал об этом. Или используйте связку android.app.DialogFragment и android.app.FragmentManager (ваш вариант) или android.support.v4.app.DialogFragment c FragmentManager manager = getSupportFragmentManager(); если использовать AppCompatActivity
Спасибо!
Доброго времени суток!!!
Не подскажет кто как сделать диалог с 3 кнопками и прогресс баром???
пробовал через .setView(Layout)
кнопки и прогресс бар отображаются,но вот как на них поставить листнер и управлять прогресс баром...?)
Доброго времени суток!!!
Не подскажет кто как сделать диалог с 3 кнопками и прогресс баром???
пробовал через .setView(Layout)
кнопки и прогресс бар отображаются,но вот как на них поставить листнер и управлять прогресс баром...?)
Пример с тремя кнопками есть в уроке, с этим проблем у Вас возникнуть не должно...
А прогресс-бар... Не уверен, что такое получится. Диалог - это диалог, все-таки... Расскажите подробнее, что хотите сделать, для чего Вам прогресс-бар - подумаем, как быть.
Я пишу сервер, и клиентов отображаю в список при нажатие на элемент которого нужно что бы открывался элемент управления этим клиентом,а в прогресс бар должен отображать данные которые присылает клиент.
в списке точно такиеже прогресс бары,но они работает правильно.Если через setView делать то progress bar отображается,но как им управлять?!)
Я пишу сервер, и клиентов отображаю в список при нажатие на элемент которого нужно что бы открывался элемент управления этим клиентом,а в прогресс бар должен отображать данные которые присылает клиент.
в списке точно такиеже прогресс бары,но они работает правильно.Если через setView делать то progress bar отображается,но как им управлять?!)
И Вы в диалоговое окно выводите элементы управления, правильно понимаю? А почему в отдельную Activity не хотите этот функционал перенести?
Да, и здесь же вопрос - данные от клиентов как именно получаете? Предположу, что есть отдельный поток для этого, который как-то сообщает полученные данные... возможно, в активность, которая со списком?
И Вы в диалоговое окно выводите элементы управления, правильно понимаю? А почему в отдельную Activity не хотите этот функционал перенести?
Да, и здесь же вопрос - данные от клиентов как именно получаете? Предположу, что есть отдельный поток для этого, который как-то сообщает полученные данные... возможно, в активность, которая со списком?
да есть несколько потоков(каждый отвечает за своего клиента), организовано на сокетах,
данные получаю и передаю в основную активити как json объект,
Я пробовал в другой активити управление организовать, но как тогда передать экземпляр класса потока конкретного клиента что бы отправить ему команду?
Форум Александра Климова → Android → Диалоговые окна
Powered by PunBB, supported by Informer Technologies, Inc.