Android父活动历史记录堆栈问题
想象一下这个活动历史堆栈: A>B>C>D A是B的父母 B是D的父母 C是可选的 如果我将父项设置为这样并按顺序导航,则在向后导航(向上或向后)方面,一切都会按照我需要的方式工作: 前进:A>B>C>D 向上:D>B>A 返回:D>C>B>A 然而,如果我跳过B 向前:A>D Up:D>A-为什么D不像D>B>A那样启动B,并依附于清单父项? 返回:D>A 我是否需要在应用程序启动时合成一个后台堆栈 AndroidManifest.xmlAndroid父活动历史记录堆栈问题,android,android-activity,android-manifest,Android,Android Activity,Android Manifest,想象一下这个活动历史堆栈: A>B>C>D A是B的父母 B是D的父母 C是可选的 如果我将父项设置为这样并按顺序导航,则在向后导航(向上或向后)方面,一切都会按照我需要的方式工作: 前进:A>B>C>D 向上:D>B>A 返回:D>C>B>A 然而,如果我跳过B 向前:A>D Up:D>A-为什么D不像D>B>A那样启动B,并依附于清单父项? 返回:D>A 我是否需要在应用程序启动时合成一个后台堆栈 AndroidManifest.xml <manifest xmlns:android=
<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>
正如您所看到的,
navigateUpFromSameTask
仅尝试在同一任务中查找父任务,但是在案例A>D中,B未创建,因此不在任务中,它不会创建并启动父任务
要做到这一点,可以在从数据库调用D时使用TaskStackBuilder
TaskStackBuilder.create(this)
// add all of DetailsActivity's parents to the stack,
// followed by DetailsActivity itself
.addNextIntentWithParentStack(new Intent(this, D.class))
.startActivities();
尝试在application元素下添加android:noHistory=“false”。。。我只是深入研究了这些文件,自己也发现了这一点。非常方便!我还向github添加了一个示例项目:
TaskStackBuilder.create(this)
// add all of DetailsActivity's parents to the stack,
// followed by DetailsActivity itself
.addNextIntentWithParentStack(new Intent(this, D.class))
.startActivities();