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) {
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.main_fragment_container, fragment, tag);
transaction.commit();
}
优化为:
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