我有以下活动: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,但不幸的是当前的实现使应用程序关闭。
答案 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)
如果您想简化,可以尝试向上导航
<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);
}