前言
1Activity+多Fragment的模式挨稿。相信大多數(shù)Android app開(kāi)發(fā)人員都不會(huì)感到陌生速址。很常見(jiàn)的界面辕棚,比如一些平板的設(shè)置界面奴曙。就是左邊一排按鈕别凹,右邊區(qū)域?qū)iT(mén)用來(lái)放左邊按鈕點(diǎn)擊之后需要展示的界面。
項(xiàng)目背景
項(xiàng)目中洽糟,在做橫豎屏切換的時(shí)候炉菲,出現(xiàn)了兩個(gè)問(wèn)題:
1.當(dāng)我切換的時(shí)候,右邊的顯示界面會(huì)直接顯示第一個(gè)碎片的內(nèi)容坤溃。但是我可能之前是在看第三個(gè)碎片內(nèi)容的時(shí)候進(jìn)行的橫豎屏切換的拍霜;
2.當(dāng)我切換的時(shí)候,數(shù)據(jù)會(huì)重新加載薪介,導(dǎo)致切換的時(shí)候祠饺,又出現(xiàn)了等待數(shù)據(jù)加載的狀況。
解決辦法
- 在Activity的onConfigurationChanged(Configuration newConfig)的方法里面做一些操作汁政。已改變這樣的狀況道偷。如果出現(xiàn),這個(gè)方法记劈,在做橫豎屏切換的時(shí)候勺鸦,并不會(huì)被調(diào)用。不要著急目木,請(qǐng)看:
只有在Activity配置文件配置過(guò)android:configChanges="orientation"才會(huì)在换途,橫豎屏切換的時(shí)候,走onConfigurationChanged(Configuration newConfig)這個(gè)方法刽射。 - 在onSaveInstanceState(Bundle outState)和onRestoreInstanceState(Bundle savedInstanceState)這兩個(gè)方法倒是會(huì)在切換橫豎屏的時(shí)候被調(diào)用怀跛。于是我打算在這兩個(gè)方法里面做點(diǎn)什么,以解決數(shù)據(jù)的重復(fù)加載柄冲,已經(jīng)碎片的輕易銷(xiāo)毀的問(wèn)題吻谋。
- 在準(zhǔn)備這么做的時(shí)候,想試試现横,通過(guò)在配置文件里面設(shè)置Activity的配置能不能達(dá)到我要的效果漓拾。于是,把之前的項(xiàng)目里面的一個(gè)配置android:configChanges="orientation|keyboardHidden|keyboard|screenSize"放進(jìn)我當(dāng)前的戒祠,包含多個(gè)Fragment的Activity的配置當(dāng)中骇两。一運(yùn)行,很給力