Android返回导航

时间:2014-11-25 14:31:04

标签: android android-activity back flags

我有以下活动:A - > B - > C - > D.如果我按活动D的后退按钮,我想回到A.这是代码:

活动A

// Launch Activity B
Intent intent = new Intent();
intent.setClass(ActivityA.this, ActivityB.class);

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

活动B

 // Launch Activity C
 Intent intent = new Intent();
 intent.setClass(ActivityB.this, ActivityC.class);

 startActivity(intent);

活动C

// Launch Activity D
Intent intent = new Intent();
intent.setClass(ActivityC.this, ActivityD.class);

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

startActivity(intent);
finish();

活动D 中,我按回去,我想回到活动A.我不想每次打开活动时都使用finish(),因为当我在活动CI时想要能够回到B,但是当我在活动D中时,我想直接转到A,但不幸的是当前的实现使应用程序关闭。

4 个答案:

答案 0 :(得分:2)

也许这会解决:(记得覆盖onBackPressed)

Intent intent = new Intent(this,A.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

旗帜的含义:

如果已设置,并且正在启动的活动已在当前任务中运行,则不会启动该活动的新实例,而是将关闭其上的所有其他活动,并将此Intent传递给(现在在最前面)作为新意图的旧活动。

例如,考虑一个由活动组成的任务:A,B,C,D。如果D调用带有解析为活动A组件的Intent的startActivity(),则B,C和D将完成, A接收给定的Intent,导致堆栈现在为:A。

答案 1 :(得分:1)

如果您想简化,可以尝试向上导航 enter image description here

<application ... >
    ...
    <!-- The main/home activity (it has no parent activity) -->
    <activity
        android:name="com.example.myfirstapp.MainActivity" ...>
        ...
    </activity>
    <!-- A child of the main activity -->
    <activity
        android:name="com.example.myfirstapp.DisplayMessageActivity"
        android:label="@string/title_activity_display_message"
        android:parentActivityName="com.example.myfirstapp.MainActivity" >
        <!-- Parent activity meta-data to support 4.0 and lower -->
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.example.myfirstapp.MainActivity" />
    </activity>
</application>

答案 2 :(得分:0)

您可以捕获活动D上的后退按钮,然后使用标志FLAG_ACTIVITY_CLEAR_TOP启动活动A.

// For Android 2.0 and above
@Override
public void onBackPressed() {

    Intent intent = new Intent(currentActivity.this, ActivityA.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);   
    startActivity(intent);
}

请点击此处查看FLAG_ACTIVITY_CLEAR_TOP

的说明

另一个例子表明,你也可以Provide Up Navigation。但是,这与后退see here for comparison

的工作方式不同

答案 3 :(得分:0)

覆盖后退按钮方法并添加自定义导航:

@Override
public void onBackPressed() {
    Intent intent = new Intent(this, ActivityA.class);
    startActivity(intent);
}