美文网首页
从根源解决FragmentTabHost切换会onDestroy

从根源解决FragmentTabHost切换会onDestroy

作者: 麻吉哥 | 来源:发表于2017-07-31 11:42 被阅读36次

FragmentTabHost里面的doTabChanged方法里面:

TabInfo newTab =null;

for(inti=0;i

TabInfo tab =mTabs.get(i);

if(tab.tag.equals(tabId)) {

newTab = tab;

}

}

if(newTab ==null) {

throw newIllegalStateException("No tab known for tag "+ tabId);

}

if(mLastTab!= newTab) {

if(ft ==null) {

ft =mFragmentManager.beginTransaction();

}

if(mLastTab!=null) {

if(mLastTab.fragment!=null) {

ft.detach(mLastTab.fragment);

}

}

if(newTab !=null) {

if(newTab.fragment==null) {

newTab.fragment= Fragment.instantiate(mContext,

newTab.clss.getName(),newTab.args);

ft.add(mContainerId,newTab.fragment,newTab.tag);

}else{

ft.attach(newTab.fragment);

}

}

mLastTab= newTab;

}

可以看到里面是detach跟attach。

重写FragmentTabHost为BTFragmentTabHost将其里面的doTabChanged将detach替换为hide,将attach替换为show。

相关文章

网友评论

      本文标题:从根源解决FragmentTabHost切换会onDestroy

      本文链接:https://www.haomeiwen.com/subject/avgllxtx.html