我有嵌套在一個片段ViewPager
,當設備改變方向,我想保存和恢復ViewPager
是在哪一頁。目前,我正在這樣做:setCurrentItem嵌套viewpager
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
mViewPager = (ViewPager) inflater.inflate(R.layout.activity_albumpicker, container, false);
// Create the adapter that will return a fragment for each of the three
// primary sections of the activity.
mSectionsPagerAdapter = new SectionsPagerAdapter(getChildFragmentManager());
setRetainInstance(true);
// Set up the ViewPager with the sections adapter.
mViewPager.setAdapter(mSectionsPagerAdapter);
if(savedInstanceState != null) {
mViewPager.setCurrentItem(savedInstanceState.getInt("pagerState"), false);
}
return mViewPager;
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("pagerState", mViewPager.getCurrentItem());
}
期間onSaveInstanceState
值被保存是正確的,在onCreateView
旋轉savedInstanceState.getInt("pagerState")
值後也是正確的。但沒有任何反應,ViewPager
停留在它的默認頁面上,logcat中沒有任何內容。我很難過。
問題在於你的viewpager擁有子視圖(Fragment?我猜),然後直到這些子視圖被完全創建,你的viewpager的項數應該是0.你可以檢查你的子視圖的日誌來製作suare。 –
實際產品數量爲1。如果所有的孩子都被裝上了,那應該是3。儘管它確實有助於縮小它的範圍,但仍然沒有真正告訴我如何解決這個問題,謝謝 – Nick
由於旋轉屏幕觸發了一些方法(例如onConfigurationChanged),並且它也取決於您的主機Activity的Manifest設置,你能告訴我你是如何擁有他們的嗎?部分信息沒問題。 –