1. 程式人生 > >Android Fragment 切換時佈局重疊

Android Fragment 切換時佈局重疊

用Fragment模擬Tab頁面,正常情況不會發生切換時重疊問題,但是當應用在後臺執行時,設定更改語言選項或系統不小心強制關閉後,再進入應用會同時顯示多個Tab內容,UI發生重疊。

這是因為再次回到這個app的時候,通過onCreate中的引數savedInstanceState恢復了之前的fragment。此時的FragmentTransaction中的相當於又再次add了fragment進去的,之前儲存的fragment也還在。hide()和show()方法對之前儲存的fragment已經失效了。所以出現了重疊的現象。

解決方法1:

各個對應的Fragment xml檔案設定不透明的背景顏色,掩蓋掉其它fragment:android:background="@color/white"

解決方法2:

@Override

public void onSaveInstanceState(Bundle outState) {    //super.onSaveInstanceState(outState);//將這一行註釋掉,阻止activity儲存fragment的狀態 }

解決方法3:

Fragment frag[]={new GameFragment(),new LiveFragment(),new DataFragment(),new PersonalFragment()};

FragmentManager fm = getSupportFragmentManager();
@Override
protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mian);
if(savedInstanceState!=null){
//tag為add時的tag
for(int i=0;i<frag.length;i++){
Fragment fragtag = fm.findFragmentByTag("tag"+i);
if (fragtag!=null) {
frag[i]=fragtag;
}
}
}
}