我想在 android onBackPressed() 事件上显示一个警告对话框
DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
//@Override
public void onClick(DialogInterface dialog, int which) {
switch (which){
case DialogInterface.BUTTON_POSITIVE:
//Yes button clicked
break;
case DialogInterface.BUTTON_NEGATIVE:
//No button clicked
break;
}
}
};
但在 onBackPressed() 事件中执行时出现错误
@Override
public void onBackPressed() {
super.onBackPressed();
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Are you sure?").setPositiveButton("Yes", dialogClickListener)
.setNegativeButton("No", dialogClickListener).show();
}
错误: “com.java.mypkg 泄露了最初添加到此处的窗口 com.android.internal.policy.impl.PhoneWindow$DecorView@406c3798”
我是不是漏掉了什么。请帮忙。
最佳答案
是的,不要根据之前用户的响应调用它。 super.onBackPressed();
将 onStop
方法的 Activity 。而不是 onBackPressed();
您可以使用 onKeyDown
来满足您的要求。如果您需要在按下后退按钮时打开一个 AlertDialog
,您可以简单地尝试使用 KeyEvent。
例如——
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
switch(keyCode)
{
case KeyEvent.KEYCODE_BACK:
AlertDialog.Builder ab = new AlertDialog.Builder(AlertDialogExampleActivity.this);
ab.setMessage("Are you sure?").setPositiveButton("Yes", dialogClickListener)
.setNegativeButton("No", dialogClickListener).show();
break;
}
return super.onKeyDown(keyCode, event);
}
DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which){
case DialogInterface.BUTTON_POSITIVE:
//Yes button clicked
break;
case DialogInterface.BUTTON_NEGATIVE:
//No button clicked
break;
}
}
};
当您重写onKeyDown
方法时,它将使用您的KEYCODE_BACK 检测返回键。
希望对你有帮助。
关于android - Android 中的是/否警报对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11715371/