【问题标题】:Getting Parent ViewPager View from inside Fragment从片段内部获取父 ViewPager 视图
【发布时间】:2012-08-28 05:04:55
【问题描述】:

我正在尝试从片段内部访问父 viewpager,但我不知道该怎么做。 我需要在片段内的 onClick 事件之后切换 ViewPager 上的 currentItem。

有什么想法吗?

编辑:

我想访问父视图(ViewPager 视图),以便我可以从我的一个片段内部更改可见的 currentItem。

【问题讨论】:

  • 您的问题不清楚,请补充一些相关信息。

标签: android android-fragments android-viewpager


【解决方案1】:

从片段中调用 getActivity(),它将为您提供片段所在的活动。然后调用 findViewById(ViewPagerId) 获取 ViewPager。

ViewPager vp=(ViewPager) getActivity().findViewById(ViewPagerId);

【讨论】:

  • 在晚上敲了我一整天的头然后找到了你的答案,非常感谢。
  • 天哪,这帮了很多忙,应该早点考虑一下:(
【解决方案2】:

编辑:我必须补充一点,即使 Eldhose 的回答有效,我也会捍卫我的方法。因为 Fragment 对包含它的 Activity 了解得越少越好。通过这样做,您可以在不依赖 ID 的情况下获取父视图,即使它不是 ViewPager,您仍然可以从中获取信息。

您可以在 Fragment 的onCreateView 方法中获取。

container 参数是父视图,在这种情况下,是一个 ViewPager。

在 Java 中:

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        
        ViewPager pager = (ViewPager) container;
        //.... Rest of your method
    }

Kotlin 版本:

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup, 
    savedInstanceState: Bundle) {

        val pager = container as ViewPager
        //.... Rest of your method
    }

【讨论】:

    【解决方案3】:

    onCreateView 和 onViewCreated 和 onAttach 方法调用过早。

    该视图在片段的onResume 方法中肯定附加到其父视图。这是一个使用getView().getParent()的好地方

    【讨论】:

      【解决方案4】:

      另一种帮助我的方法:

                      List<Fragment> fragment = getActivity().getSupportFragmentManager().getFragments();
                      for (Fragment f:fragment) {
                          if (f instanceof CreatCheckInFragment){
                              ((ParentFragment) f).viewPager.arrowScroll(View.FOCUS_LEFT);
                          }
                      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多