Закрытие нескольких диалогов одновременно - PullRequest
0 голосов
/ 29 января 2012

Я пишу приложение для Android, в котором выбор пользователя вызывает пользовательский Dialog, из которого выбор может вызвать секунду Dialog.

При отображении начального значения Dialog из класса Activity я устанавливаю onDismissListener для извлечения пользовательских настроек, что отлично работает в других случаях, когда 2-й диалог не запускается. Проблема, с которой я сталкиваюсь, заключается в том, что я не могу понять, как оставить первый диалог открытым, пока второй не будет закрыт, так что информация от обоих отправляется обратно в класс Activity.

Надеюсь, какой-нибудь код сделает это немного более понятным:

Класс MainActivity, где я запускаю исходный CustomDialog:

customDialog = new CustomDialog(this);
                customDialog.show();
                customDialog.setOnDismissListener(new OnDismissListener(){
                    public void onDismiss(DialogInterface di){
                        slection = customDialog.getselection();
                        updateUI(); //updates a listview with the results
                    }
                });

Внутри класса CustumDialog, где я запускаю SecondDialog поверх него:

if(specify){
    SecondDialog secondDialog = new SecondDialog(context);
    secondDialog.show();
    secondDialog.setOnDismissListener( new OnDissmissListener(){
        public void onDismiss(DialogInterface di){
            // this is where I want to call the CustomDialog's dismiss() method
            // so that they both close at the same time and the data from here
            // can be sent back to the MainActiivty through the CustomDialog's
            // onDismissListener

        }
    });
}
dismiss();

Итак, еще раз: я пытаюсь предотвратить вызов метода dismiss() CustomDialog до тех пор, пока SecondDialog также не будет отклонен. Есть ли способ, которым я могу вызвать его из OnDismissListener SecondDialog?

Ответы [ 2 ]

2 голосов
/ 29 января 2012

Вы должны создать customDialog как переменную уровня экземпляра.Вы тогда будете доступны с onDismiss(...) второго диалога.Там вы можете позвонить customDialog.dismiss();

// Instance level variable
private Dialog customDialog = null;

Instanciate ваш customDialog, а затем создать второй диалог из вашего customDialog.Код вашего второго диалогового окна будет выглядеть следующим образом.

if(specify){
    SecondDialog secondDialog = new SecondDialog(context);
    secondDialog.show();
    secondDialog.setOnDismissListener( new OnDissmissListener(){
        public void onDismiss(DialogInterface di){
            // customDialog is accessible as it is declared as instance level variable
            MyClassName.this.customDialog.dismiss();

        }
    });
}
dismiss();
0 голосов
/ 29 января 2012

Я предпочитаю сохранять данные в 1-м диалоговом окне, прежде чем отправлять его, а когда закрываю 2-е диалоговое окно, снова откройте 1-е диалоговое окно с сохраненными данными. Я использовал этот способ в своей разработке и его эффективность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...