1. 解决切换Fragment切换导致重新创建Fragment问题

在项目中切换Fragment,一直都是用replace()方法来替换Fragment。但是这样做有一个问题,每次切换的时候Fragment都会重新实列化,重新加载一次数据,这样做会非常消耗性能用用户的流量

官方文档解释说:replace()这个方法只是在上一个Fragment不再需要时采用的简便方法

正确的切换方式是add(),切换时hide(),add()另一个Fragment;再次切换时,只需hide()当前,show()另一个,这样就能做到多个Fragment切换不重新实例化。

切换方法:

/**
* 切换不同的Fragment
* @param from
* @param
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>