我正在尝试从片段内部访问父 viewpager,但我不知道该怎么做。我需要在片段内的 onClick 事件之后切换 ViewPager 上的 currentItem。
有任何想法吗?
编辑:
我想访问父视图(ViewPager View),以便我可以从我的一个片段内部更改可见的 currentItem。
我正在尝试从片段内部访问父 viewpager,但我不知道该怎么做。我需要在片段内的 onClick 事件之后切换 ViewPager 上的 currentItem。
有任何想法吗?
编辑:
我想访问父视图(ViewPager View),以便我可以从我的一个片段内部更改可见的 currentItem。
从片段中,调用 getActivity() 它将为您提供托管片段的活动。然后调用 findViewById(ViewPagerId) 来获取 ViewPager。
ViewPager vp=(ViewPager) getActivity().findViewById(ViewPagerId);
编辑:我必须补充一点,即使 Eldhose 的回答有效,我也会捍卫我的方法。因为片段对包含它的 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
}
科特林版本:
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup,
savedInstanceState: Bundle) {
val pager = container as ViewPager
//.... Rest of your method
}
方法onCreateView
和onViewCreated
被onAttach
调用得太早。
onResume
该视图在片段的方法中肯定附加到其父视图。这是一个很好的地方然后使用getView().getParent()
另一种帮助我的方法:
List<Fragment> fragment = getActivity().getSupportFragmentManager().getFragments();
for (Fragment f:fragment) {
if (f instanceof CreatCheckInFragment){
((ParentFragment) f).viewPager.arrowScroll(View.FOCUS_LEFT);
}
}