想象一下这个活动历史堆栈:
A> B> C> d
A是B的父母
B是D的父母
C是可选的
如果我按照这样设置父母并按顺序导航,那么一切都按照我需要的方式向后导航(Up to Back):
转发:A> B> C> d
向上:D> B>甲
返回:D> C> B>甲
但是,如果我跳过B ......
转发:A> d
向上:D> A - 为什么不启动B,如D> B> A,坚持明显的父母?
返回:D>甲
我是否需要在app start处合成后台堆栈?
的AndroidManifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.worked.navigation_flow">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<activity
android:name=".A"
android:label="A">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".B"
android:label="B"
android:parentActivityName=".A" />
<activity
android:name=".C"
android:label="C" />
<activity
android:name=".D"
android:label="D"
android:parentActivityName=".B"/>
</application>
</manifest>
活动上升按钮
public void onUp(View view) {
NavUtils.navigateUpFromSameTask(this);
}
答案 0 :(得分:1)
正如您所看到的,navigateUpFromSameTask
只是尝试在同一个任务中找到父级,但是在您的情况下,A&gt; D,B未创建,因此不在任务中,也不会创建并启动父级。
为此,您可以在从A
调用D时使用TaskStackBuilderTaskStackBuilder.create(this)
// add all of DetailsActivity's parents to the stack,
// followed by DetailsActivity itself
.addNextIntentWithParentStack(new Intent(this, D.class))
.startActivities();