fragment 只有第一次加载数据其他时候不加载更新数据

来源:互联网 发布:舞蹈软件哪个好 编辑:程序博客网 时间:2024/06/06 04:24

fragment只有第一次加载数据其他时候不加载更新数据也就是说在fragment创建的时候加载数据,其他生命周期都加载数据。

这种情况下,考虑使用hide和show来实现。可是hide和show的时候,一般情况下是都已经把fragment都事先加入add了。

问题来了,事先加入后是把所有的fragment都提前创建好加载数据了,看不到的fragment也会执行,造成浪费。

解决办法:

1.一开始加载一个fragment

2.切换fragment 的时候fragment存在就不执行生命周期不加载数据,不存在是创建fragment执行生命周期加载数据

3.切换同一个fragment时不做进一步操作



思路有了,接下来编写代码:


Fragment currentFragment;

private void  changeFragment(Fragment changeFragment  ,  id layout){

if(changeFragment==null)return;

if(changeFragment==currentFragment) return;

FragmentTransaction ft = getSupportFragmentManager()        .beginTransaction();
if(!changeFragment.isAdded){
ft.add(changeFragment);
}

ft.hide(currentFragment);

ft.show(changeFragment);

ft.commit();

currentFragment=changeFragment;

}

0 0
原创粉丝点击