#android #android-alertdialog
#Android #android-alertdialog
Вопрос:
У меня есть действие — форма с некоторыми текстовыми полями, и пользователь нажимает кнопку отправки после заполнения всех полей. Когда пользователь нажимает кнопку отправки, должно появиться диалоговое окно с предупреждением, а затем, когда пользователь нажимает OK, выполняется остальная часть кода OnClickListener. В настоящее время мой код выглядит примерно так.
прослушиватель для кнопки отправки / завершения:
private final OnClickListener mFinishListener = new OnClickListener() {
public void onClick(View v) {
displayAlert();
// Some other things to do here. Lets say showing some other activity
};
Код диалогового окна предупреждения:
public void displayAlert(){
new AlertDialog.Builder(this).setMessage("Hi , I am Alert Dialog")
.setTitle("My Alert")
.setCancelable(true)
.setNeutralButton(android.R.string.ok,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton){
finish();
}
})
.show();
}
Я получаю странный вывод. Когда я нажимаю кнопку отправки / завершения, мне отображается диалоговое окно с предупреждением, но оно исчезает до того, как я нажму кнопку OK. Почему?
Ответ №1:
Hi this is working but don't write finish(); after displayAlert(); function.
private final OnClickListener mFinishListener = new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
displayAlert();
//your code // don't write finish(); here if you write
}
};
public void displayAlert(){
new AlertDialog.Builder(this).setMessage("Hi , I am Alert Dialog")
.setTitle("My Alert")
.setCancelable(true)
.setNeutralButton(android.R.string.ok,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton){
finish();
}
})
.show();
}
Ответ №2:
Код, который вы хотите выполнить после того, как пользователь нажмет OK, должен быть перемещен в метод onClick AlertDialog . Сразу после finish()
. В противном случае он начнет выполняться во время отображения диалогового окна.
Ответ №3:
Если вы хотите закрыть только диалоговое окно
public void onClick(DialogInterface dialog, int whichButton){
dialog.dismiss();
}
Если вы хотите закрыть как диалоговое окно, так и закрыть действие
public void onClick(DialogInterface dialog, int whichButton){
dialog.dismiss();
finish();
}