在 AlertDialog.Builder 处于活动状态时通过主页按钮完成 Activity
Finish Activity via Home Button while AlertDialog.Builder is active
我希望我的应用在 AlertDialog.Builder
处于活动状态时完成当前 activity,只需单击一次主页按钮即可。通常它需要点击两次(第一次点击关闭对话框,第二次关闭当前 activity 然后)。
我试图将 finish()
放入 public boolean onKeyDown()
方法中,但我只在第二次点击时进入它(即当 AlertDialog.Builder
不再处于活动状态时) .
有什么想法吗?
PS: 我的AlertDialog.Builder
在onCreate(
)方法中。
如果对话框不可取消,您应该会在第一次按下主页按钮时转到主屏幕。参见 AlertDialog.Builder#setCancelable(boolean)
。
当您在 activity 上按下主页按钮时,它会调用 OnStop() 方法
所以你必须在你的 Activity 上处理它:
@Override
protected void onStop() {
super.onStop();
}
所以在你的情况下,你可以使用这个:
@Override
protected void onStop() {
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
}
希望对你有帮助 ;)
祝你好运
我希望我的应用在 AlertDialog.Builder
处于活动状态时完成当前 activity,只需单击一次主页按钮即可。通常它需要点击两次(第一次点击关闭对话框,第二次关闭当前 activity 然后)。
我试图将 finish()
放入 public boolean onKeyDown()
方法中,但我只在第二次点击时进入它(即当 AlertDialog.Builder
不再处于活动状态时) .
有什么想法吗?
PS: 我的AlertDialog.Builder
在onCreate(
)方法中。
如果对话框不可取消,您应该会在第一次按下主页按钮时转到主屏幕。参见 AlertDialog.Builder#setCancelable(boolean)
。
当您在 activity 上按下主页按钮时,它会调用 OnStop() 方法
所以你必须在你的 Activity 上处理它:
@Override
protected void onStop() {
super.onStop();
}
所以在你的情况下,你可以使用这个:
@Override
protected void onStop() {
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
}
希望对你有帮助 ;) 祝你好运