在项目中需要进行Fragment的切换,一直都是用replace()方法来替换Fragment
但是,这样会有一个问题 ,应该很多朋友都遇到过:
每次切换的时候,Fragment都会重新实例化,也就是运行OnCreatVIew()方法
那么如何让多个Fragment彼此切换时不重新实例化?
正确的切换方式是add(),切换时hide(),add()另一个Fragment,再次切换时,只需hide()当前,show()另一个。
最后我给出最近刚开始的一个项目 做了一部分框架功能 包含SlideMenu 和 Json解析 供大家参考!
但是,这样会有一个问题 ,应该很多朋友都遇到过:
每次切换的时候,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();
} |
最后我给出最近刚开始的一个项目 做了一部分框架功能 包含SlideMenu 和 Json解析 供大家参考!