Проблема с диалоговым окном при выходе в Android
Я разработал приложение, в котором есть одно действие, и я собираюсь написать код при выходе, я хочу сделать диалоговое окно с тремя кнопками, когда пользователь нажал кнопку "Назад", одну для "да", вторую для "дома" и третью для "выхода" и я сделал это на спине нажатым методом, но у меня возникла проблема, когда диалоговое окно не отображается, если отображается, то просто мигает диалоговое окно, так какова причина этого
мой код
public class MainActivity extends Activity {
private AlertDialog alertDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public void onBackPressed() {
super.onBackPressed();
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
MainActivity.this);
alertDialogBuilder.setTitle("Alert Dialogue Box");
alertDialogBuilder.setMessage("Are you sure?");
alertDialogBuilder.setPositiveButton("Yes",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Toast.makeText(getApplicationContext(),
"Positive", 1000).show();
}
});
alertDialogBuilder.setNegativeButton("No",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
Toast.makeText(getApplicationContext(),
"You chose a negative answer",
Toast.LENGTH_LONG).show();
}
});
alertDialogBuilder.setNeutralButton("Exit the app",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Toast.makeText(getApplicationContext(), "exit",
1000).show();
MainActivity.this.finish();
}
});
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
}
2 ответа
Код, который вы написали, в порядке. Но эти строки приводят к Exception
..
super.onBackPressed();
который закончит Activity
Так что ваши Dialog
уволен с Исключением утечки Окна. Поэтому удалите эту строку из своего кода.
Добавьте эту строку, чтобы отменить касание снаружи.
alertDialog.setCanceledOnTouchOutside(false);
Вы можете установить AlertDialog.Builder в диалоге, например:
Dialog dia = new AlertDialog.Builder(this)
и использовать dia
использовать SetCanceledOnTouchOutside
метод