我有一个带有 child PersonActivity的SearchAcvitity。每个都是FragmentActivity的。这是我的 list 文件:
<activity android:name=".SearchActivity" android:label="@string/search_title">
</activity>
<activity android:name=".PersonActivity" android:label="@string/person_title"
android:parentActivityName=".SearchActivity" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".SearchActivity" />
</activity>
从SearchFragment,我像这样启动PersonActivity:
Intent i = new Intent(getActivity(), PersonActivity.class);
startActivity(i);
仅此一项就在PersonFragment中的应用程序图标旁边添加了向左的插入符号。当我按此图标时,它将重新创建SearchAcvitiy(和 fragment ),因此其先前状态会丢失。
当我改为按下PersonFragment的后退按钮时,它会通过onResume(...)返回到SearchActivity的SearchFragment,并且其状态保持不变。我该如何通过up操作实现这一目标?
请注意,我不会在PersonFragment中拨打此电话:
getActivity()。getActionBar()。setDisplayHomeAsUpEnabled(true);
最佳答案
UP导航使用Intent.FLAG_ACTIVITY_CLEAR_TOP
启动父Activity。该标志的标准行为是完成任务堆栈中父 Activity 之上的所有 Activity ,包括父 Activity 本身,然后启动父 Activity **的新实例。如果要恢复父 Activity 的现有实例,则可以在 list 中为父 Activity 设置以下内容:
android:launchMode="singleTop"
一起使用CLEAR_TOP和SINGLE_TOP时,将恢复父 Activity 的现有实例。在这种情况下,将不会在已恢复的父 Activity 上调用
onCreate()
,而是将调用onNewIntent()
。