我正在使用上面的方法为我的应用程序创建类似退出对话框的内容。代码工作得很好但警报对话框只在屏幕上停留不到一秒钟。然后它消失,应用程序关闭而不遵循我的指示。我不知道为什么会这样。
提前谢谢你。
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
super.onBackPressed();
DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which){
case DialogInterface.BUTTON_POSITIVE:
ganthem.stop();
System.exit(0);
break;
case DialogInterface.BUTTON_NEGATIVE:
dialog.cancel();
break;
}
}
};
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Exit or not ?").setPositiveButton("Yes", dialogClickListener)
.setNegativeButton("No", dialogClickListener).show();
}
答案 0 :(得分:1)
与删除super.onBackPressed()
电话的建议相反,为了完整起见,我只建议移动电话。
Aprian对您原始问题的评论正确回答了为什么您只能在短时间内看到对话框并且应用程序正在关闭。
...然而
假设您有两个Activity
类,例如......
public class ActivityA extends Activity {
...
@Override
public void onBackPressed() {
// Do something
}
}
public class ActivityB extends ActivityA {
...
@Override
public void onBackPressed() {
// Do something
super.onBackPressed();
}
}
在这种情况下,您需要使用super.onBackPressed()
的{{1}}方法拨打onBackPressed()
。
对于您的代码,您不清楚ActivityB
扩展了什么,但我会更改代码如下...
Activity
如果您的DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which){
case DialogInterface.BUTTON_POSITIVE:
ganthem.stop();
MyActivity.this.onBackPressed();
break;
case DialogInterface.BUTTON_NEGATIVE:
dialog.cancel();
break;
}
}
};
直接扩展了Android Activity
课程,那么(正如Aprian所评论的那样)会导致Activity
正确完成“{1}}。但是,如果您的Activity
扩展了自己的Activity
覆盖Activity
,则会执行正确的代码序列。
要注意的一件事是,如果你在后台堆栈上有onBackPressed()
,在这种情况下,在任何直接扩展Android Fragments
类的内容上调用onBackPressed()
可能只会导致顶层Activity
完成,下一个从堆栈中弹出。
答案 1 :(得分:0)
删除super.onBackPressed();
。