将消息从Activity传递给以编程方式创建的Fragment

时间:2014-01-16 13:36:24

标签: android fragment

美好的一天,你们真棒!这是我的情况。我想基于ActionBar中的选项刷新嵌套片段的内容。该片段具有ListView,如果选择了第一个ActionBar选项,则应显示一个列表;如果选择了第二个选项,则应显示另一个列表。假设我的ActionBar中有几个选项(“全部”“突出显示”)。

enter image description here

所需的片段位于TabHost中,它有一个ViewPager。

<TabHost>

<LinearLayout>

    <TabWidget
        android:id="@android:id/tabs" />

    <FrameLayout
        android:id="@android:id/tabcontent" />

    <android.support.v4.view.ViewPager
        android:id="@+id/pager" />

</LinearLayout>

此外,这是我添加标签的方式:

mHomeTabsAdapter.addTab(mTabHost.newTabSpec("controls").setIndicator("CONTROLS"), ControlsFragment.class, null);

因为我以编程方式添加片段,所以我不能给它一个id并使用FragmentManager通过ID找到它。如何获得对ControlsFragment的引用,以便我可以从MainActivity的onNavigationItemSelected中刷新它?

在理想情况下,我应该能够去内onNavigationItemSelected片段的引用和再次提供与项目列表中的适配器。

我阅读了通讯文章(http://developer.android.com/training/basics/fragments/communicating.html),但我担心这对我不起作用。有人有建议吗?

1 个答案:

答案 0 :(得分:0)

使用标签!

执行交易时,您可以指定标记。

 FragmentTransaction.add(Fragment fragment, String tag);

您可以使用

找到该片段
 FragmentManager.findFragmentByTag(String tag);