【问题标题】:Access ViewPager's Parent Fragment View in child fragment of Pager在Pager的子fragment中访问ViewPager的Parent Fragment View
【发布时间】:2019-09-23 18:48:31
【问题描述】:

我想在一个附加了 View Pager 的子片段中访问父片段视图。意味着父片段包含一个视图分页器和视图分页器然后有一个片段,我想在分页器的当前片段中使用父片段视图。

父片段---->(包含)查看分页器----->(包含)子片段。 Child Fragment 想要使用 Parent Fragment 多个视图。请提出任何解决方案。

提前致谢。

【问题讨论】:

  • 使用 getActivity().getSupportFragmentManager().findFragmentByTag("YOUR TAG") 或 getActivity().getSupportFragmentManager().findFragmentById(R.id.YOURFRAGMENT)

标签: android android-fragments android-viewpager


【解决方案1】:

在您的子片段中使用:

ParentFragment frag = ((ParentFragment)this.getParentFragment());

在您的父片段中,您可以存储所需视图的引用并使用 getter setter 来访问它们,另一种解决方案是创建侦听器接口。按照以下链接了解如何实施:

http://developer.android.com/training/basics/fragments/communicating.html

【讨论】:

  • 谢谢,这就是我要找的东西!
  • 这将在 api 中返回 null
  • java.lang.NullPointerException: 尝试调用虚方法不工作
  • Kotlin 版本:val parentFrag = parentFragment as ParentFragment 或使用 as?,如果此 Fragment 类可能出现在不同的父 Fragment 类中。
【解决方案2】:

在父片段内部

     ViewPagerAdapter adapter = new ViewPagerAdapter(getChildFragmentManager())

确保它是 getChildFragmentManager()

在子片段内部,从父片段访问任何东西

     ((ParentFragment)this.getParentFragment()).any_thing_inside_parent_fragment;

【讨论】:

    【解决方案3】:

    你可以使用下面的代码。

            FloatingActionButton fab =  getParentFragment().getView().findViewById(R.id.menu_item);
    

    【讨论】:

      【解决方案4】:

      我试图使用parent 获得sibling Fragment,所以我尝试使用child Fragment 中的getParentFragment(),它总是返回null。因此,我只是从viewpagerAdapter 获得了片段,这就是我访问sibling Fragment 所做的:

      public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
      {
          mViewPager = (ViewPager) container;
          BasePagerAdapter bpa = (BasePagerAdapter) mViewPager.getAdapter();
          MySiblingFragment f = (MySiblingFragment) bpa.getItem(1); //I know the position of the fragment so I hardcoded it
      
      }
      

      希望这会对某人有所帮助。

      【讨论】:

      • 最佳解决方案兄弟。
      • 我们需要从孩子而不是相反的情况下访问父框架。
      【解决方案5】:

      我使用这个从活动中获取变量和视图

      YourActivity activity = (YourActivity) getActivity();
      activity.mVar = 1;
      activity.textView.setText("Number "+activity.mVar);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-17
        • 1970-01-01
        • 1970-01-01
        • 2013-07-15
        相关资源
        最近更新 更多