原因:为什么会出现界面重叠呢?因为每当我们离开Activity的时候,切换到别的APP的时候,当内存不够用,Fragment所在Activity被销毁,会调用onSaveInstanceState()方法,Fragment都会被保存起来,当我再次回到这个app的时候,通过onCreate中的参数savedInstanceState恢复了之前的fragment,就导致了界面重叠。
解决办法:
1.在进入onCreate函数时,先去判断savedInstanceState是否为null,如果不为null,则表示里面有保存这个fragment。则不再重新去add这个fragment,而是通过Tag从前保存的数据中直接去读取,看一下代码:
public void onCreate(Bundle savedInstanceState) { fManager = getFragmentManager(); if (savedInstanceState != null) { fg1 = (AllOfficialAccountFragment) fManager.findFragmentByTag("fg1"); fg2 = (MovieOfficialAccountFragment) fManager.findFragmentByTag("fg2"); fg3 = (NewsOfficialAccountFragment) fManager.findFragmentByTag("fg3"); fg4 = (OtherOfficialAccountFragment) fManager.findFragmentByTag("fg4"); } super.onCreate(savedInstanceState); }
实例代码:
设置Tag的代码:
transaction.add(R.id.fragment_main, personalFragment,"person");
transaction.add(R.id.fragment_main, homeFragment,"home");
transaction.add(R.id.fragment_main, messageFragment,"message");
onCreate()方法中:
if(savedInstanceState!=null){
personalFragment= (PersonalFragment) fragmentManager.findFragmentByTag("person");
homeFragment= (HomeFragment) fragmentManager.findFragmentByTag("home");
messageFragment= (MessageFragment) fragmentManager.findFragmentByTag("message");
}
點(diǎn)擊查看更多內(nèi)容
為 TA 點(diǎn)贊
評(píng)論
評(píng)論
共同學(xué)習(xí),寫下你的評(píng)論
評(píng)論加載中...
作者其他優(yōu)質(zhì)文章
正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦