Я пытаюсь получить ввод от другого метода, а затем использовать этот вход после этого, но приложение не ждет ввода.Как сделать приложение ждать ввода
Код, который я бегу это
case (R.id.menuSort):
sSort = sortPopup();
layout.removeAllViews();
arrlst.clear();
checkLogs();
где sortPopup это метод, который создает диалоговое окно и возвращает строку. Когда я нажимаю кнопку, функция removeAllViews, clear и checkLogs запускается до того, как я выберу параметр из диалогового окна.
Я пытался использовать wait и уведомлять, но даже после прочтения нескольких тем с подобной проблемой я не могу достичь своей цели без сбоя программы.
Есть ли способ предотвратить запуск 3 функций до достижения результата методом sortPopup?
Код onPopup выглядит следующим образом
public String sortPopup() {
initializePopup(arrsSort);
new AlertDialog.Builder(this).setTitle("Select Sort")
.setAdapter(adapter, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
if (arrsSort[which] == "Ascending") {
sChoice = "ASC";
} else {
sChoice = "DESC";
}
}
}).create().show();
return sChoice;
}
Метод с диалогом отличается от другого. Как я могу использовать прослушиватель onDismiss для диалога в другом методе? – Dzinic
Это зависит от того, как вы создали диалог ... Добавьте код sortPopUp, и я вижу, что я могу сделать;) –
Плохая идея запускать код в методе 'onDismiss', потому что диалог можно отклонить не только нажатием кнопки ' Ok ', но также нажав «Отмена» и во время изменений конфигурации (например, ориентация экрана). См. Мой ответ ниже. – makovkastar