当按下后退键时,我创建了一个警告对话框,询问用户是否需要将应用程序放入后台或退出
@Override
public void onBackPressed() {
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);
dialogBuilder.setPositiveButton("Keep ON", new OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which) {
onPause();
}
});
dialogBuilder.setNegativeButton("Exit", new OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which) {
onDestroy();
}
});
dialogBuilder.setMessage("Do you want to keep the activity running on background");
AlertDialog Dialog = dialogBuilder.create();
Dialog.show();
}
但是调用onPause()和onDestroy()不起作用
有任何解决方案可以满足我的目标....
答案 0 :(得分:4)
你绝对不应该手动调用onPause
和onDestroy
:)这是Android的功能,而不是你。
另外,我会说这种对话是非常糟糕的用户体验。当按下“后退”按钮时,Android用户可以很好地了解他们在做什么。
无论如何,如果这个对话对你来说非常重要,那就是:
要“销毁”应用程序 - 在onClick侦听器中调用finish()
dialogBuilder.setNegativeButton("Exit", new OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
});
对于“背景”,事情有点棘手。您需要发送启动家庭活动的意图:
dialogBuilder.setPositiveButton("Keep ON", new OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
startActivity(intent);
}
});
此外,如果您按下“后退”按钮,我就不会致电super.onBackPressed()
,因为它会完成您的活动 - 这是默认行为