在onViewCreated之前调用onPageSelected

时间:2014-12-02 20:15:17

标签: android

这对我来说是个大问题,因为我需要从界面调用一个方法 我的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();
}

有人知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

根据FragmentPagerAdapter's setPrimaryItem()方法(ViewPager设置当前页面时调用),它会调用setUserVisibleHint(true)作为当前页面的片段。您可以在Fragment中覆盖该方法,然后在那里执行fragmentBecameVisible()方法。