基本上我的問題是有點「易」:
我在景觀這款平板佈局:平板電腦佈局,改變取決於屏幕方向錯誤
並希望改變佈局,如果用戶旋轉平板電腦進入人像模式,這種佈局:
在第一個景觀中,Ui顯示一次顯示兩個片段,左側爲Fragment1
,右側爲Fragment2
。 Fragment2
的容器是ViewPager
,其中還包含Fragment3
。用戶可以看到Fragment3
,或點擊ActionBar
中的選項卡。
在第二個人像,佈局的Ui顯示全部三個Fragment
s,ViewPager
被刪除,標籤也是,因爲它們是不必要的。
我創造的景觀佈局,我的MainActivity這樣的:
// ActionBar Stuff
mActionbar = getSupportActionBar();
mActionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
mActionbar.setHomeButtonEnabled(false);
// Swipe Stuff
mAdapter = new FragmentAdapter(fm);
mPager = (ViewPager) findViewById(R.id.viewpager);
mPager.setAdapter(mAdapter);
mPager.setOnPageChangeListener(this);
// Initialize Tabs
Tab1 = mActionbar.newTab().setText("Tab1");
Tab2 = mActionbar.newTab().setText("Tab2");
// Set Tab to Fragment // they're initialized here and accessed in the ViewPager (mPager)
Fragment1 = new FirstFragment();
Fragment3 = new ThirdFragment();
android.support.v4.app.FragmentManager fm = getSupportFragmentManager();
android.support.v4.app.FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.fragment_one_container, Fragment1).commit();
// //TabListener///////////////////////////
Tab1.setTabListener(new TabsListener(mApp, 0 + "", mPager));
Tab2.setTabListener(new TabsListener(mApp, 1 + "", mPager));
// //Add Tabs//////////////////////////////
mActionbar.addTab(Tab1);
mActionbar.addTab(Tab2);
在刷卡和一些更復雜的東西這兩個片段之間的ViewPager
開關,像在運行時與其他Fragment
小號取代Fragment2
(用於導航)。
到目前爲止,一切都很好,我對縱向佈局的代碼是相似的:
// ActionBar Stuff
mActionbar = getSupportActionBar();
mActionbar.setHomeButtonEnabled(false);
// Swipe Stuff
mAdapter = new FragmentAdapter(fm);
mPager = (ViewPager) findViewById(R.id.viewpager);
mPager.setAdapter(mAdapter);
mPager.setOnPageChangeListener(this);
// Set Tab to Fragment // they're initialized here and accessed in the ViewPager (mPager)
Fragment1 = new FirstFragment();
Fragment3 = new ThirdFragment();
android.support.v4.app.FragmentManager fm = getSupportFragmentManager();
android.support.v4.app.FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.fragment_one_container, Fragment1);
ft.replace(R.id.fragment_three_container, Fragment3);
ft.commit();
的ViewPager是Fragment2
容器,其他容器在上面的代碼解釋。
佈局文件R.layout.main_tablet_land
和R.layout.main_tablet_port
在layout-lard-land
和layout-large-port
中。
我實際的問題是不顯示,這個工作,我的問題是方向變化,我得到這個異常:java.lang.IllegalStateException: Can't change container ID of fragment Fragment3
我推翻onConfiguratioChange
並試圖setContentView(layout)
重新應用佈局和調用該方法的佈局(第一個代碼塊)和tablet_port
(第二個塊)。 (還有更多..)
任何想法如何避免這種情況?
編輯:沒有想法?