2014-12-02 84 views
2

這對我來說是一個很大的問題,因爲我需要從接口 調用我的viewpager中的所有片段正在實現的方法。我需要做這樣的事情:onPageSelected被調用之前onViewCreated

@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(); 
    } 
} 

此作品爲「正常啓動」,但是當我旋轉屏幕,我得到空指針異常 因爲使用onPageSelected被onViewCreated之前調用。我需要我的觀點每次得到更新 一個片段變得可見。首先,我希望onResume每次都會被調用,但它沒有。對於 我實現的接口:

public interface FragmentVisible { 
    public void fragmentBecameVisible(); 
} 

是否有人有一個想法如何解決這個問題?

回答

0

根據FragmentPagerAdapter's setPrimaryItem()方法(在ViewPager設置當前頁面時調用),它會調用setUserVisibleHint(true)來獲取當前頁面的片段。您可以在Fragment中覆蓋該方法,並在其中執行fragmentBecameVisible()方法。

+1

這也是在onCreate或onCreateView之前調用的。但我想我可以處理它。我將實現setUserVisibleHint和onResume,並在setUserVisibleHint中檢查我的視圖是否爲null。謝謝。 – Mulgard 2014-12-02 21:07:03

相關問題