2

Activity A -> Activity B -> Activity C -> Activity D. 在 Activity D 中按下 back 应该将用户导航出应用程序,而 Back 应该对于 Activity C、B 和 A 正常工作。即C -> back -> B -> back A -> back -> exit

我尝试Activity.FLAG_ACITIVITY_CLEAR_TOP,使用不同的组合设置标志等。似乎没有任何效果。最低 API 级别 7。

4

4 回答 4

2

为了#1 Pressing back in Activity D should navigate user out of the application

在 ActivityD 中,您可以覆盖 onBackPressed 或 onKeyDown 方法,然后使用带有 Exit 标志的标志 FLAG_ACTIVITY_CLEAR_TOP 启动 ActivityA(通过 putExtra 方法)。在 ActivityA 中,如果 Exit 标志设置为 true,您可以获得该 Exit 标志值并调用 finish()。

在活动 A 的 onCreate 方法中,您必须做的是

if (getIntent().getBooleanExtra("EXIT", false)) {
 finish();
}

在 ActivityD 的 onBackPressed 或 onKeyPressed 方法中,

intent = (this, ActivityA.class);   
   intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
   intent.putExtra("EXIT", true);
   startActivity(intent); 

为了#2 Exit from ActivityA

您可以简单地在 onBackPressed 或 onKeyPressed 上调用 finish() 方法。

于 2012-09-19T10:09:38.580 回答
0

Android 活动存储在活动堆栈中。回到以前的活动可能意味着两件事。

  1. 您使用 startActivityForResult 从另一个活动中打开了新活动。在这种情况下,您只需从代码中调用 finishActivity() 函数,它就会带您回到上一个活动。

  2. 跟踪活动堆栈。每当您使用一个意图启动一个新活动时,您都可以指定一个意图标志,如 FLAG_ACTIVITY_REORDER_TO_FRONT 或 FLAG_ACTIVITY_PREVIOUS_IS_TOP。您可以使用它在应用程序中的活动之间随机播放。不过没怎么用过。看看这里的标志

于 2012-09-19T10:11:29.600 回答
0

您是否尝试过在 Activity D 中覆盖 BACK 按钮的功能?我很确定这与您需要的非常相关:覆盖后退按钮以充当主页按钮

了解 Android 活动生命周期。

于 2012-09-19T10:12:43.697 回答
0
  1. “在 Activity D 中按回应该将用户导航出应用程序”

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
            if (keyCode == KeyEvent.KEYCODE_BACK) {
                moveTaskToBack(true);           
                return true;
            }
            return super.onKeyDown(keyCode, event);
        }
    
  2. 这是操作系统的正常行为,你不必为它做任何特别的事情。

于 2012-09-19T11:00:45.147 回答