Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
63 / 41 / 3
Регистрация: 24.08.2013
Сообщений: 620
1

Модальное окно

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

Author24 — интернет-сервис помощи студентам
Скажите, неужели невозможно добиться того, чтобы при запуске диалогового окна (или похожего на диалоговое), далее код не выполнялся, пока это окно не будет закрыто?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.01.2016, 12:11
Ответы с готовыми решениями:

Нужно закрыть модальное окно и сделать активным вызвавшее его окно
Мне нада средствами Win API закрыть модальное окно и сделать активным вызвавшее его окно. Кто знает...

Создать модальное окно (дочернее окно) как в одноклассниках
Здраствуйте всем, Нужна помощь. Я хочу создать модальное окно (дочерное окно) в ASP.NET на примере...

Модальное окно, сделать загрузку в окно по ссылке
Привет всем нашел в интернете скрипт модального окна. Очень он мне подходит но есть одно но я хочу...

Как создать окно в окне (модальное окно)?
Подскажите новичку, как создать на сайте в родительском окне небольшое окошко поверх него для ввода...

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

Не по теме:

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

0
63 / 41 / 3
Регистрация: 24.08.2013
Сообщений: 620
20.01.2016, 12:34  [ТС] 4
Цитата Сообщение от Паблито Посмотреть сообщение
код надо выстроить так что бы вызывалось диалоговое окно, а на dismiss повесить слушатель, в котором будет вызываться нужный метод (это ведь ООП)
Не понял. Пример можно?
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
20.01.2016, 12:44 5
слишком абстрактный вопрос
0
12 / 12 / 4
Регистрация: 17.09.2015
Сообщений: 57
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();
0
63 / 41 / 3
Регистрация: 24.08.2013
Сообщений: 620
21.01.2016, 09:03  [ТС] 7
Вопрос то был в том, чтобы после строки
Java
1
my_fragment.show()
не выполнялся остальной код, пока не закрыто это окно.
0
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
21.01.2016, 10:29 8
Цитата Сообщение от Slon747 Посмотреть сообщение
не выполнялся остальной код, пока не закрыто это окно.
Зачем это вообще нужно? Не пишите после этой строки код вообще, а вынесете его в onDissmiss диалога.
0
63 / 41 / 3
Регистрация: 24.08.2013
Сообщений: 620
21.01.2016, 11:00  [ТС] 9
Цитата Сообщение от Spelcrawler Посмотреть сообщение
Зачем это вообще нужно? Не пишите после этой строки код вообще, а вынесете его в onDissmiss диалога.
У меня один и тот же далогог "Да/Нет" используется для разных логик.
Хочется сделать один диалог и использовать его по любому поводу в любой активити.
0
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
21.01.2016, 11:01 10
Slon747, в чем проблема то? Можно в каждой активити вешать на этот же диалог onDismissListener.
0
63 / 41 / 3
Регистрация: 24.08.2013
Сообщений: 620
21.01.2016, 15:03  [ТС] 11
Цитата Сообщение от Spelcrawler Посмотреть сообщение
в чем проблема то? Можно в каждой активити вешать на этот же диалог onDismissListener.
А что это изменить?
Всё равно код будет разбросан по активити.
В одном месте я спрашиваю подтверждение, а в другом (в переопределенном onDismissListener) выполняю действия. Да еще всё также придется перед выполнением анализировать, что же именно я спрашивал у пользователя.
0
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
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();
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
21.01.2016, 15:18 13
мысль пришла что можно в свой диалог передавать Runnable объект, который в дисмис слушателе запускать на выполнение
тогда будет один универсальный диалог на все приложение
х.з. как там этот паттерн называется, стратегия что ли
0
63 / 41 / 3
Регистрация: 24.08.2013
Сообщений: 620
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)
0
21.01.2016, 16:47
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.01.2016, 16:47
Помогаю со студенческими работами здесь

MessageBox: Как сделать так, чтобы если окно модальное, при клике на родительское окно MessageBox мигал?
Здравия всем! Никак не найду нужный MB_*, как можно сделать так, чтобы если сделать MessageBox...

Модальное окно и БД
Help !!!! Как вывести информацию в модальное окно ??? При нажатии на кнопку вызова модального окна,...

Модальное окно
Добрый день подскажите пожалуйста как сделать чтоб модальное окно открывалось автоматически после...

Модальное окно
Подскажите, как добавить в меню сайта кнопку вызова модального окна с помощью Bootstrap, чтобы при...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru