2012-09-27 35 views
4

我有一個ViewPager。 My FragmentPageAdapter以getItem()方法返回Viewpager的位置。但旋轉屏幕後,方法不會返回任何值。爲什麼?如果我理解正確,每次旋轉屏幕OnCreateView()被調用,但爲什麼它不會返回值?有人能指出如何解決這個問題嗎?謝謝在Android中旋轉後獲取ViewPager的位置

編輯:我FragmentPageAdapter:

public Fragment getItem(int position) { 

    return Fragment_results.newInstance(position); 
} 

我的片段:

public static Fragment_results newInstance(int i) { 

    Fragment_results fragment = new Fragment_results(); 
    fragment.mContent = i +""; 

    return fragment; 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.layout_result, null); 
    ((TextView) view.findViewById(R.id.text)).setText(mContent); 
+1

你是什麼意思它沒有返回值? 'getItem()'方法是你的PagerAdapter的一部分。它是否返回值完全取決於您的實現。 'ViewPager#getCurrentItem()'將返回'ViewPager'的編號位置,可以在屏幕旋轉時重置爲'0'。 – DeeV

+0

我編輯的問題,幷包括我的代碼。但爲什麼要重置爲0? – Ahmad

回答

12

的位置上時的ViewPager實例的創建設置爲0,只要你設置一個新的適配器。當調用onCreateView()時,您基本上正在重建整個應用程序。爲了恢復到原來的位置,您必須先使用onSavedInstanceState(Bundle savedInstanceState)並通過捆綁包存儲物品位置。

@Override 
protected void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 
    outState.putInt("pageItem", myViewPager.getCurrentItem()); 
} 

然後在onCreate,恢復viewPager的狀態,像這樣:

if (savedInstanceState != null) { 
    myViewPager.setCurrentItem(savedInstanceState.getInt("pageItem", 0)); 
}