这对我来说是个大问题,因为我需要从界面调用一个方法 我的viewpager中的所有片段都在实现。我需要做这样的事情:
@Override
public void onPageSelected(int position) {
this.getActivity().getActionBar().setSelectedNavigationItem(position);
FragmentVisible fragment = (FragmentVisible) this.fragmentPager.instantiateItem(this.viewPager, position);
if (fragment != null) {
fragment.fragmentBecameVisible();
}
}
这适用于"正常启动"但是当我旋转屏幕时,我得到了nullpointer异常 因为onPageSelected在onViewCreated之前被调用。我需要我的观点每次都得到更新 一个片段可见。首先,我希望onResume每次都会被调用,但它没有。为了那个原因 我实现了界面:
public interface FragmentVisible {
public void fragmentBecameVisible();
}
有人知道如何解决这个问题吗?
答案 0 :(得分:0)
根据FragmentPagerAdapter's setPrimaryItem()方法(ViewPager
设置当前页面时调用),它会调用setUserVisibleHint(true)作为当前页面的片段。您可以在Fragment
中覆盖该方法,然后在那里执行fragmentBecameVisible()
方法。