我正在尝试从片段内部访问父viewpager,但我不知道该怎么做。 我需要在片段内的onClick事件之后在ViewPager上切换currentItem。
有什么想法吗?
编辑:
我想访问父视图(ViewPager View),以便我可以从我的一个片段中更改可见的currentItem。
答案 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)
方法onCreateView
和onViewCreated
以及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);
}
}