我想在onBackPressed()事件中在android中显示一个警告对话框
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;
}
}
};
Run Code Online (Sandbox Code Playgroud)
但是我在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();
}
Run Code Online (Sandbox Code Playgroud)
错误:" com.java.mypkg泄漏了最初添加的窗口com.android.internal.policy.impl.PhoneWindow$DecorView@406c3798 "
我错过了什么吗?请帮忙.
是的,不要按照之前用户的响应调用它.super.onBackPressed();将onStop活动的方法.而不是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;
}
}
};
Run Code Online (Sandbox Code Playgroud)
当您覆盖onKeyDown方法时,它将使用您的KEYCODE_BACK检测返回键
希望这对你有所帮助.
| 归档时间: |
|
| 查看次数: |
12443 次 |
| 最近记录: |