1. 解决切换Fragment切换导致重新创建Fragment问题
在项目中切换Fragment,一直都是用replace()方法来替换Fragment。但是这样做有一个问题,每次切换的时候Fragment都会重新实列化,重新加载一次数据,这样做会非常消耗性能用用户的流量
官方文档解释说:replace()这个方法只是在上一个Fragment不再需要时采用的简便方法
正确的切换方式是add(),切换时hide(),add()另一个Fragment;再次切换时,只需hide()当前,show()另一个,这样就能做到多个Fragment切换不重新实例化。
切换方法:
/**
* 切换不同的Fragment
* @param from
* @param to
*/
public void switchFragment(Fragment from, Fragment to) {
if (mContent != to) {
mContent = to;
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
if (!to.isAdded()) {
// 先判断是否被add过
if(from != null){
transaction.hide(from);
}
if(to != null){
transaction.add(R.id.fl_content, to).commit();
}
} else {
if(from != null){
transaction.hide(from);
}
if(to != null){
transaction.show(to).commit();
}
}
2. 解决横竖屏切换导致的Fragment内容重叠问题
<activity android:name=".activity.MainActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
>
</activity>