Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Slon747
59 / 37 / 1
Регистрация: 24.08.2013
Сообщений: 423
#1

Модальное окно - Программирование Android

20.01.2016, 12:11. Просмотров 579. Ответов 13
Метки нет (Все метки)

Скажите, неужели невозможно добиться того, чтобы при запуске диалогового окна (или похожего на диалоговое), далее код не выполнялся, пока это окно не будет закрыто?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.01.2016, 12:11     Модальное окно
Посмотрите здесь:

Модальное окно - Visual C++
Когда с из одного окна вызываешь другое диалоговое окно (типа dlg.DoModal()), во втором появляются автоматически кнопочки OK и CANSEL. Они...

Модальное окно - JavaScript
Сделал модальное окно, но при клике на содержание окна все закрывается,а надо чтобы только при клике по затемненной стороне все...

Модальное окно - JavaScript
Доброго времени суток! Народ возникла необходимость в создании модальных окон при нажатии на ссылку, в эти окна должен быть встроен...

Модальное окно - PHP
На сайте есть кнопка "удалить". И чтобы пользователь случайно, нажав на нее, не удалил свою запись, нужно выводить модальное окно с...

Модальное окно - JavaScript
Здравствуйте. Народ нужна помощь с модальным окном, точнее с проверкой. Нужно открыть модальное окно, если пользователь закрыл окно...

Модальное окно - JavaScript
Кто может помочь? Нужно преобразовать вот этот код <html> <head> <title>УЧЕБНИК</title> <style type="text/css"> <!-- body { ...

Модальное окно - JavaScript
Есть вот такое модальное окно, написано полностью на CSS. В нем есть поля для заполнения и кнопка submit. Есть два вопроса: 1. Как...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
androbro
323 / 283 / 59
Регистрация: 17.10.2014
Сообщений: 839
20.01.2016, 12:13     Модальное окно #2
Цитата Сообщение от Slon747 Посмотреть сообщение
Скажите, неужели невозможно добиться того, чтобы при запуске диалогового окна (или похожего на диалоговое), далее код не выполнялся, пока это окно не будет закрыто?
как то давно тоже нужна была такая фича, но поиск выдал только какие то жесткие костыли) стандартными средствами вроде никак.
в общем отказался от такой задумки))
Pablito
20.01.2016, 12:25
  #3

Не по теме:

код надо выстроить так что бы вызывалось диалоговое окно, а на dismiss повесить слушатель, в котором будет вызываться нужный метод (это ведь ООП)

Slon747
59 / 37 / 1
Регистрация: 24.08.2013
Сообщений: 423
20.01.2016, 12:34  [ТС]     Модальное окно #4
Цитата Сообщение от Паблито Посмотреть сообщение
код надо выстроить так что бы вызывалось диалоговое окно, а на dismiss повесить слушатель, в котором будет вызываться нужный метод (это ведь ООП)
Не понял. Пример можно?
Pablito
2459 / 1904 / 591
Регистрация: 12.05.2014
Сообщений: 6,712
Завершенные тесты: 1
20.01.2016, 12:44     Модальное окно #5
слишком абстрактный вопрос
Kadagor
12 / 12 / 4
Регистрация: 17.09.2015
Сообщений: 47
20.01.2016, 18:41     Модальное окно #6
Можно установить Cancelable в false и вызывать нужную функцию по нажатию кнопок
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setTitle("Окно")
    .setMessage("Текст")
    .setCancelable(false)
    .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() { // Кнопка ОК
        @Override
        public void onClick(DialogInterface dialog, int which) {
            //указываем функцию
        }
    })
    .setNegativeButton(R.string.cansel, new DialogInterface.OnClickListener() { 
        @Override
        public void onClick(DialogInterface dialog, int which) {
            //указываем функцию
        }
    });
AlertDialog dilog = builder.create();
Или так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setTitle("Окно")
    .setMessage("Текст")
    .setCancelable(true)
    .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() { // Кнопка ОК
        @Override
        public void onClick(DialogInterface dialog, int which) {
            //указываем функцию
        }
    })
    .setNegativeButton(R.string.cansel, new DialogInterface.OnClickListener() { 
        @Override
        public void onClick(DialogInterface dialog, int which) {
            //указываем функцию
        }
    })
    .setOnDismissListener(new DialogInterface.OnDismissListener() {
        @Override
        public void onDismiss(DialogInterface dialog) {
            //указываем функцию
        }
    });
AlertDialog dilog = builder.create();
Slon747
59 / 37 / 1
Регистрация: 24.08.2013
Сообщений: 423
21.01.2016, 09:03  [ТС]     Модальное окно #7
Вопрос то был в том, чтобы после строки
Java
1
my_fragment.show()
не выполнялся остальной код, пока не закрыто это окно.
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,648
Завершенные тесты: 1
21.01.2016, 10:29     Модальное окно #8
Цитата Сообщение от Slon747 Посмотреть сообщение
не выполнялся остальной код, пока не закрыто это окно.
Зачем это вообще нужно? Не пишите после этой строки код вообще, а вынесете его в onDissmiss диалога.
Slon747
59 / 37 / 1
Регистрация: 24.08.2013
Сообщений: 423
21.01.2016, 11:00  [ТС]     Модальное окно #9
Цитата Сообщение от Spelcrawler Посмотреть сообщение
Зачем это вообще нужно? Не пишите после этой строки код вообще, а вынесете его в onDissmiss диалога.
У меня один и тот же далогог "Да/Нет" используется для разных логик.
Хочется сделать один диалог и использовать его по любому поводу в любой активити.
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,648
Завершенные тесты: 1
21.01.2016, 11:01     Модальное окно #10
Slon747, в чем проблема то? Можно в каждой активити вешать на этот же диалог onDismissListener.
Slon747
59 / 37 / 1
Регистрация: 24.08.2013
Сообщений: 423
21.01.2016, 15:03  [ТС]     Модальное окно #11
Цитата Сообщение от Spelcrawler Посмотреть сообщение
в чем проблема то? Можно в каждой активити вешать на этот же диалог onDismissListener.
А что это изменить?
Всё равно код будет разбросан по активити.
В одном месте я спрашиваю подтверждение, а в другом (в переопределенном onDismissListener) выполняю действия. Да еще всё также придется перед выполнением анализировать, что же именно я спрашивал у пользователя.
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,648
Завершенные тесты: 1
21.01.2016, 15:09     Модальное окно #12
Цитата Сообщение от Slon747 Посмотреть сообщение
А что это изменить?
Да все вообще. Если уж охота писать в одном месте можно даже и так
Java
1
2
3
4
5
6
7
8
9
10
//Берем свой диалог, который везде используется
//Ну и вешаем на него листенер
dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
        @Override
        public void onDismiss(DialogInterface dialog) {
            //Тут все что нужно после закрытия диалога
        }
    });
//Показываем диалог
dialog.show();
Pablito
2459 / 1904 / 591
Регистрация: 12.05.2014
Сообщений: 6,712
Завершенные тесты: 1
21.01.2016, 15:18     Модальное окно #13
мысль пришла что можно в свой диалог передавать Runnable объект, который в дисмис слушателе запускать на выполнение
тогда будет один универсальный диалог на все приложение
х.з. как там этот паттерн называется, стратегия что ли
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.01.2016, 16:47     Модальное окно
Еще ссылки по теме:

Модальное окно - C# WPF
Я создал окно и мне его нужно показать модально, т.е в том окне у меня свои кнопки и тд, как это делать

Модальное окно - Delphi
Создал модальное окно поместил на нее кнопку,как сделать так что бы по нажатии на нее закрывалось только это окно а не вся программа?

Модальное окно - JavaScript
В сети взял модальное окно. Нужно переделать его что бы при нажатии меня спрашивало уверены ли вы? Нажав на "Да" Запрос отправляется...

модальное окно - PHP
мне тут хороший человек, помог с модальным окном ну недавно я заметил проблему с этим окном, помогите разобраться перед открытием...

Модальное окно - C++ Qt
Как можно добиться эффекта модального окна чтобы можно было использовать только окно программы?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Slon747
59 / 37 / 1
Регистрация: 24.08.2013
Сообщений: 423
21.01.2016, 16:47  [ТС]     Модальное окно #14
Цитата Сообщение от Spelcrawler Посмотреть сообщение
Да все вообще. Если уж охота писать в одном месте можно даже и так
Спасибо за подсказку.
Но вот что я делаю. Создал класс для диалога:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class YesNoDialog extends android.app.DialogFragment implements OnClickListener {
 
 
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
 
        form = getActivity().getLayoutInflater().inflate(R.layout.yes_no, null);
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
 
        Dialog dialog = super.onCreateDialog(savedInstanceState);
        dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
 
        return builder.setTitle("").setView(form)
                .setPositiveButton(android.R.string.ok, this)
                .setNegativeButton(android.R.string.cancel, null).create();
    }
 
    @Override
    public void onClick(DialogInterface dialogInterface, int i) {
 
    }
Далее вызываю этот диалог из главной активити:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
YesNoDialog dialog_yesno = new YesNoDialog();
Bundle args = new Bundle();
args.putString("question", "Закрыть карту?");
dialog_yesno.setArguments(args);
 
//тут подчеркивает красным setOnDismissListener.
dialog_yesno.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
    //Тут все что нужно после закрытия диалога
        }
    });
 
dialog_yesno.show(getFragmentManager(), "");
Подчеркивает красным setOnDismissListener.
Тогда я в класс YesNoDialog.java добавляю setter:

Java
1
2
3
public void setOnDismissListener(DialogInterface.OnDismissListener onDismissListener) {
    this.onDismissListener = onDismissListener;
}
В итоге событие выбора кнопки не перехватывается в onDismiss(DialogInterface dialog)
Yandex
Объявления
21.01.2016, 16:47     Модальное окно
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru