在項目中需要進行fragment的切換,一直都是用replace()方法來替換fragment
但是,這樣會有一個問題 ,應該很多朋友都遇到過:
每次切換的時候,fragment都會重新執行個體化,也就是運作oncreatview()方法
那麼如何讓多個fragment彼此切換時不重新執行個體化?
正确的切換方式是add(),切換時hide(),add()另一個fragment,再次切換時,隻需hide()目前,show()另一個。
//之前顯示的fragment
private fragment mcontent;
/** 修改顯示的内容 不會重新加載 **/
public void switchcontent(fragment to) {
if (mcontent != to) {
fragmenttransaction transaction = getsupportfragmentmanager()
.begintransaction();
if (!to.isadded()) { // 先判斷是否被add過
transaction.hide(mcontent).add(r.id.content, to).commit(); // 隐藏目前的fragment,add下一個到activity中
} else {
transaction.hide(mcontent).show(to).commit(); // 隐藏目前的fragment,顯示下一個
}
mcontent = to;
}
showcontent();
}
demo:http://download.csdn.net/detail/jdsjlzx/9385695