【问题标题】:Android: Get Parent View's Framelayout from Fragment inside TabHostAndroid:从 TabHost 中的 Fragment 获取父视图的 Framelayout
【发布时间】:2015-12-21 19:34:01
【问题描述】:

我有一个FragmentActivity,其中显示了两个FragmentsFragment AFragment B。在Fragment A 我有另一个带有标签的片段。我使用经典的TabHost 完成了这项工作。在这个TabHost 中,我还有两个Fragments,其中有一个ListView。现在我想要的是点击listitem 我想替换父FragmentActivityFragment B 中的内容。请帮助我实现这一目标。到目前为止,我已经尝试了以下方法。

1. View mContainer = (View)getActivity().findViewById(R.id.rightpane);
2. ViewGroup mContainer = (ViewGroup)getView().getParent();
3. Activity rrlist = ((RRPatientList)getParentFragment()).getActivity().getParent();
   View mContainer = (View) rrlist.findViewById(R.id.rightpane);

   ResultDetailView rdl = new ResultDetailView();
   rdl.setArguments(args);
   FragmentTransaction ft = getFragmentManager().beginTransaction();
   ft.replace(mContainer.getId(), rdl);
   ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);     
   ft.addToBackStack(null);
   ft.commit();

没有任何效果,我收到NullPointerExceptionNo View Found for the ID ****** 错误。

请参阅屏幕截图了解更多信息。

【问题讨论】:

    标签: android android-fragments android-tabhost android-fragmentactivity fragment-tab-host


    【解决方案1】:

    在您的活动中创建方法(如:updateFragment)以更新片段 B。从片段 A 的子片段调用该方法(updateFragment),然后该方法(updateFragment)更新片段 B。

    here is answer for update fragment from activity - 它会帮助你从你的父活动中更新片段 B

    here is answer for call activity method from fragment - 它会帮助你从片段 A 的子片段中调用父活动方法

    【讨论】:

    • 但是如何从ListFragmentTabHost 获得FragmentActivity。当只有两个层次结构(FragmentActivity -> Fragment)时,您的代码有效,但我有 FragmentActivity -> Fragment -> Fragment。这种场景下如何实现?
    • 相同的场景适用于 n 级片段,因为您将所有片段添加到一个父活动中,对吗?那么基础是活动。因此您可以从任何片段中调用活动方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-06
    • 2011-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多