活动返回导航

时间:2016-01-28 05:02:10

标签: android

如果我有跟随路径的活动,

A --> B --> C --> D

目前我在活动D中。所以如果我想直接回到B,那怎么可能呢?

我按照以下方式完成。

List<Activity> activities = new ArrayList<>();

此列表将包含所有已加载的活动,这意味着在onCreate()方法上添加到此列表的活动。

所以目前这个列表会有A, B, C, D,所以如果想直接回到B那么我要做的就是从这个列表中获取最后两个活动并使用{{1 }}。我知道这不是正确的方法。

所以我想知道,是否有更好的方法可以做到这一点?。

  

注意:在某些情况下,我只会直接进入活动B,所以我不能   在开始活动D时完成C.

更新

此外,我可以直接从活动D返回活动A,所以我的问题是

  

我可以随时跳过任何活动,也可以回到任何活动   随时活动

有可能吗?

4 个答案:

答案 0 :(得分:2)

从活动C开始活动D时,您应该使用startActivityForResult。

每当您想要完成活动C时,请确保在即将完成活动时在活动D中执行setResult(RESULT_OK)。

在活动C中,覆盖onActivityResult并执行以下操作:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (resultCode != RESULT_OK)
        return;

    if (requestCode == REQUEST_CODE_SHOULD_FINISH_ACTIVITY) {
        //add any other code you might wanna add
        finish();
    }
}

答案 1 :(得分:0)

我认为您应该使用IntentFlag清除之前的所有活动。 你必须阅读本教程以获得更多的清晰。

Main Reference : http://developer.android.com/guide/components/tasks-and-back-stack.html

Source : http://tips.androidhive.info/2013/10/how-to-clear-all-activity-stack-in-android/

Exception

答案 2 :(得分:0)

你可以为每个活动实现单独的OnBackPressed()方法并移动到你想要的任何活动,但是如果你想保存当前活动的实例,你还需要使用StartActivityForResult()方法。

答案 3 :(得分:0)

像你这样在你的D Actvity上使用onBackPressed方法。

  @Override
    public void onBackPressed() {
        super.onBackPressed();
Intent i = new Intent(D.this, B.class);
startActivity(i);
    }