所以我试图获得一些片段的经验,但我发现了一些障碍。
我目前的情况如下。
我有一个显示列表的活动,其内容由“调用”活动发送的额外意图参数确定。
此 List 活动使用 XML 中声明的 ListFragment,如下所示:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" android:background="@color/black">
<fragment class="com.pixlworks.NLC.DirectoryBrowse$ListingFragment"
android:id="@+id/listing"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FrameLayout>
目前,我通过访问 Activity Intent 的 Extra 数据(或保存的 Bundle,如果可用)直接在 Fragment 中获取指示内容类型的参数:
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if (savedInstanceState != null)
mListingType = savedInstanceState.getString(Utils.DIRECTORY_TYPE_STORE_KEY);
else
mListingType = getActivity().getIntent().getStringExtra(Utils.DIRECTORY_TYPE_STORE_KEY);
// get content by type, create and set the adapter
}
现在我的部分问题是我不确定这是将参数从活动“传递”到片段的正确方法。
最重要的是,在使用操作栏的向上导航时,我遇到了此设置的问题。当我单击此列表活动中的一个项目时,它会转到另一个显示所选项目详细信息的活动。从这个细节活动:
如果我使用后退按钮,List Activity 会像往常一样从堆栈中返回,并且一切正常。
如果我使用 ActionBar 的 UP(尽管在此处执行以下步骤),似乎创建了一个新实例而不是使用堆栈中的那个,并且这个新实例显然没有在 Intent 中获取 Extra 参数。由于我希望该值存在于保存的 Bundle 或 Intent 中,因此我的应用程序在这种情况下崩溃。
因此,为了归结起来,我不确定要遵循哪些以及如何使它们与“向上”导航正常工作:
A) 将'type' 参数保存在Activity 的一个字段中,并将其保存在Activity 的Bundle onSaveInstanceState 中。在这种情况下,我不确定如何将值传递给片段。在这种情况下,我只需要确保 UP 调用活动列表的现有实例
B) 继续我当前将值保存在 Fragment 而不是 Activity 中的设置,但同样,如何正确处理 UP 导航?
我知道这是我同时在这里问的多件事,但它们都是相互关联的,所以我希望我能在这方面得到一些帮助。
提前感谢您的帮助!