您的位置:首页 > 移动开发

【安卓-优化点】安卓App开发思路 一步一个脚印(四)Fragment的重复利用

2016-10-03 16:30 477 查看

Fragment的重复利用

在现在主流的app开发中,少不了fragment的使用,fragment 是v4下的包,调用这样子的写法:

FragmentManager fragment = getSupportFragment();

Transition transition = fragment.getTransition();

transition.replace(R.id.fragment_content,new XXFragment());

transition.commit();

其中的fragment_content布局文件为 主要放在显示菜单的上面 ,下面的菜单固然是include进来的。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/main_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
>

<FrameLayout
android:id="@+id/main_fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white" />

</LinearLayout>


没当点击了任意的菜单,都replace()一下,那么肯定是生命周期又来了一遍,重新初始化了,那么如何解决重复利用呢?

现将方法进行优化

未优化前

private void replaceFragment(android.support.v4.app.Fragment fragment, String currentTAG) {
[code]     FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.main_fragment_container, fragment, tag);
transaction.commit();
}[/code]
优化为:

private String mTempFragmentTAG="";//标志当前的栏目


private void replaceFragment(android.support.v4.app.Fragment fragment, String currentTAG) {
if(!currentTAG.equals(mTempFragmentTAG)){//当点击的fragment 不是当前点击的则新建,是则跳过 那么不会执行fragment
FragmentManager mfragmentmanager = getSupportFragmentManager();
FragmentTransaction mfragmentTransaction = mfragmentmanager.beginTransaction();
if(!fragment.isAdded()){
mfragmentTransaction.replace(R.id.main_fragment_container, fragment,currentTAG).commit();
}else{
mfragmentTransaction.show(fragment);
}
mTempFragmentTAG=currentTAG;
}
}


关于此个优化,我的相关博文请看 http://blog.csdn.net/qq_14997169/article/details/52199701
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  优化 android app
相关文章推荐