【发布时间】:2016-02-12 17:46:19
【问题描述】:
我的活动流程如下所示
LogIn Activity-> Activity A(Main Page)->Activity B-> Activity C
当C中的按钮被点击时,它会指向A。
当A中的后退按钮被按下两次时,它应该关闭应用程序。
boolean doubleBackToExitPressedOnce = false;
public void onBackPressed(){
if(doubleBackToExitPressedOnce)
{
super.onBackPressed();
return;
}
this.doubleBackToExitPressedOnce = true;
Toast.makeText(this, "Please click BACK again to exit", Toast.LENGTH_SHORT).show();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
doubleBackToExitPressedOnce = false;
Intent a = new Intent(Intent.ACTION_MAIN); // close app code
a.addCategory(Intent.CATEGORY_HOME);
a.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(a);
}
},2000);
问题:
当我按一次按钮时,它会显示
Please click BACK again to exit,然后它会自动关闭应用程序,即使我 没有点击两次按钮。如果我单击该按钮两次,它将返回登录活动。什么是 正确的书写方式?谢谢
编辑
如果我删除 intent
public void onBackPressed(){
if(doubleBackToExitPressedOnce)
{
super.onBackPressed();
return;
}
this.doubleBackToExitPressedOnce = true;
Toast.makeText(this, "Please click BACK again to exit", Toast.LENGTH_SHORT).show();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
doubleBackToExitPressedOnce = false;
}
},2000);
}
当双击返回按钮时,它会再次返回到Activity C。
【问题讨论】:
-
为什么会有这样的意图?删除意图代码。调用完成而不是超级,应该没问题
-
@PedroOliveira 我不想使用
finish()。我在所有活动中都有返回按钮,我想返回上一个活动。 -
然后保持超级。但删除意图逻辑
-
“我想在 Activity A 中双击时,它会关闭应用程序”然后在 Activity A 中调用
finishAffinaty();当你在 A.doubleBackPress 上时 :) -
finishAffinity-> developer.android.com/reference/android/app/…