您的位置:首页 > 其它

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

2017-02-22 14:12 330 查看

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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: