Android 防止在onBackPressed方法中自动关闭对话框显示
如果单击“上一步”按钮,我希望向用户显示一个对话框。 我使用了如下方法创建Android 防止在onBackPressed方法中自动关闭对话框显示,android,dialog,onbackpressed,Android,Dialog,Onbackpressed,如果单击“上一步”按钮,我希望向用户显示一个对话框。 我使用了如下方法创建onBackPressed方法: @Override public void onBackPressed() { super.onBackPressed(); if (isNew || !isReport) { if (!edtReportContent.getText().toString().isEmpty() && !edtReportContent.getTex
onBackPressed
方法:
@Override
public void onBackPressed() {
super.onBackPressed();
if (isNew || !isReport) {
if (!edtReportContent.getText().toString().isEmpty() && !edtReportContent.getText().toString().equals("")) {
Toast.makeText(activity, "گزارش شما به عنوان پیش نویس ذخیره شد!", Toast.LENGTH_LONG).show();
saveReport(1);
} else {
Toast.makeText(activity, "متن گزارش نمی تواند خالی باشد!", Toast.LENGTH_SHORT).show();
final Dialog dialog = new Dialog(activity);
dialog.setContentView(R.layout.dialog_remove_draft);
Button btnDelete = (Button) dialog.findViewById(R.id.btn_delete);
btnDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
discardReport();
}
});
dialog.setCancelable(false);
dialog.show();
}
}
但是当我点击后退按钮时,我的对话框会显示几秒钟并自动消失!有什么问题
谢谢您的回答。请评论或删除这行代码,然后重试
super.onBackPressed();
移除
super.onBackPressed()代码>。您的代码现在如下所示:
@覆盖
public void onBackPressed(){
抽屉布局抽屉=(抽屉布局)findViewById(R.id.抽屉布局);
if(抽屉isDrawerOpen(重力压缩机启动)){
抽屉。关闭抽屉(重力压缩机启动);
回来
}
如果(关闭对话框==null){
Close_Dialog=新建AlertDialog.Builder(此)
.setCancelable(错误)
.setMessage(“您确定要关闭吗?”)
.setPositiveButton(“关闭”,新的DialogInterface.OnClickListener(){
@凌驾
公共void onClick(DialogInterface,inti){
MainActivity.super.onBackPressed();
覆盖转换(R.anim.right\u in,R.anim.right\u out);
}
})
.setNegativeButton(“取消”,新建DialogInterface.OnClickListener()){
@凌驾
公共void onClick(DialogInterface,inti){
dialogInterface.dismise();
}
})
.create();
}
如果(关闭_对话框!=null)
{
如果(!Close_Dialog.isShowing())
关闭_Dialog.show();
其他的
关闭_对话框。解除();
}
}
尝试重新排列对话框。可设置取消(false);然后是dialog.show();我做到了。但这无助于删除super.onBackPressed();并在onclick对话框内调用;添加super.onBackPressed();但是,在if(isNew | | |!isReport){的其他部分中,尝试使用注释部分代替小的和一行的答案。谢谢。@taukir给出“一行答案”没有错若这有助于OP解决他的问题。若答案正确,请不要介意将其标记为正确答案helpfull@H.Brooks,我只是给出了建议。我并不是想阻止任何人写答案。答案就是答案。即使一行就足够了。