我正在尝试导航到父活动。如果父活动位于后台堆栈的顶部,则它可以正常工作。如果父活动不在后台堆栈上,使用NavUtils导航只会返回上一个活动。
我的应用程序的最低SDK为16。
清单摘录:
<activity
android:name=".activities.ParentActivity"
android:label="@string/title_activity_parent"
android:theme="@style/AppTheme.NoActionBar"
android:launchMode="singleTop"/>
<activity
android:name=".activities.ChildActivity"
android:label="@string/title_activity_child"
android:parentActivityName=".activities.ParentActivity">
ChildActivity的代码段:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
Intent intent = new Intent();
intent.setClass(this, ParentActivity.class);
NavUtils.navigateUpTo(this, intent);
return true;
}
return super.onOptionsItemSelected(item);
}
我尝试了几种不同的方法来实现导航,但没有一种解决了这个问题。将ParentActivity的启动模式更改为“标准”也不起作用。
答案 0 :(得分:1)
NavUtils.navigateUpTo(Intent)
如果不在堆栈中,则不会创建父活动。您的最小API为16,因此您可以直接调用堆栈导航方法而无需使用支持类。
在你的情况下,你应该调用onNavigateUp()
方法。如果您想要自定义向上导航,您还可以覆盖shouldUpRecreateTask(Intent)
和onPrepareNavigateUpTaskStack(TaskStackBuilder)
。如果shouldUpRecreateTask(Intent)
返回true
,则如果父活动在堆栈中不存在,则将创建父活动。