从片段内部获取父ViewPager视图

时间:2012-08-28 05:04:56

标签: android android-fragments android-viewpager

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

有什么想法吗?

编辑:

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

4 个答案:

答案 0 :(得分:89)

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

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

答案 1 :(得分:27)

有点晚了,但你可以使用Fragment的onCreateView方法。

container param是父视图,在这种情况下是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
    }

答案 2 :(得分:1)

方法onCreateViewonViewCreated以及onAttach过早被调用。

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

的好地方

答案 3 :(得分:0)

另一种帮助我的方式:

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