在项目中需要进行Fragment的切换,一直都是用replace()方法来替换Fragment
但是,这样会有一个问题 ,应该很多朋友都遇到过:
每次切换的时候,Fragment都会重新实例化,也就是运行OnCreatVIew()方法
那么如何让多个Fragment彼此切换时不重新实例化?
正确的切换方式是add(),切换时hide(),add()另一个Fragment,再次切换时,只需hide()当前,show()另一个。
但是,这样会有一个问题 ,应该很多朋友都遇到过:
每次切换的时候,Fragment都会重新实例化,也就是运行OnCreatVIew()方法
那么如何让多个Fragment彼此切换时不重新实例化?
正确的切换方式是add(),切换时hide(),add()另一个Fragment,再次切换时,只需hide()当前,show()另一个。
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
|
//之前显示的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();
}
|