我正在尝试在我的应用程序中完成我的主菜单。我认为在 OnBackPressed 方法中添加一个 AlertDialog 会很简单。但是由于某种原因,我遇到了各种错误。
我在 OnBackPressed 中创建了 AlertDialog 并显示它,但是当我按下后退按钮时应用程序刚刚关闭,并且我收到错误消息说窗口正在泄漏。
知道如何解决这个问题吗?我搜索了大约 30 分钟,找不到其他有此问题的人。
我正在尝试在我的应用程序中完成我的主菜单。我认为在 OnBackPressed 方法中添加一个 AlertDialog 会很简单。但是由于某种原因,我遇到了各种错误。
我在 OnBackPressed 中创建了 AlertDialog 并显示它,但是当我按下后退按钮时应用程序刚刚关闭,并且我收到错误消息说窗口正在泄漏。
知道如何解决这个问题吗?我搜索了大约 30 分钟,找不到其他有此问题的人。
尽量不要调用super.OnBackPressed(),这段代码应该有帮助:
@Override
public void onBackPressed() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Are you sure you want to exit?")
.setCancelable(false)
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
MyActivity.this.finish();
}
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
}
如果你想调用 super.onBackPressed() 使用这个代码:
@Override
public void onBackPressed() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Are you sure you want to exit?")
.setCancelable(false)
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
//finish();
MyActivity.this.onSuperBackPressed();
//super.onBackPressed();
}
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
/*
if (handleCancel()){
super.onBackPressed();
}
*/
}
public void onSuperBackPressed(){
super.onBackPressed();
}
onSuperBackPressed
我刚刚向 MyActivity 添加了一个带有super
-method的新公共方法。
感谢K_Anas提供了这个绝妙的主意。
我在 OnBackPressed 中创建了 AlertDialog 并显示它,但是当我按下后退按钮时应用程序刚刚关闭,并且我收到错误消息说窗口正在泄漏。
如果在您OnBackPressed
的内部调用super.OnBackPressed()
,那么应用程序将完成,因为这就是基本实现的OnBackPressed
作用。不要调用该super
方法,应用程序不会关闭。
在对话框中调用 yourActivity.this.onBackPressed()
utility.makeAlertDialog("Cancel Verification","Do you want to cancel the verification process","Cancel Verification",new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which) {
utility.failureToast("OTP verification");
Intent intent = new Intent(MobileOTPActivity.this,MobileNumberLoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
finish();
MobileOTPActivity.this.onBackPressed();
}
},"Close");