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

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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值