Fragment三个包
1.android.app.Fragment
2.android.app.v4.Fragment 向下兼容
3.androidx.fragment.app.Fragment
Fragment 关键类
1.FragmentManager 碎片化的管理类
2.FragmentTransation 操作Fragment做一些事务
FragMent 切换方式
1.replace 会重新走生命周期 用的较少
2.show/hide
-
private void showFragment(Fragment fragment) {
-
if (fragment !=
null) {
-
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
-
hideAllFragment(fragmentTransaction);
-
fragmentTransaction.show(fragment);
-
fragmentTransaction.commitAllowingStateLoss();
-
}
-
}
-
-
private void hideAllFragment(FragmentTransaction fragmentTransaction) {
-
if (mFraSquare !=
null) {
-
fragmentTransaction.hide(mFraSquare);
-
}
-
if (mFraMe !=
null) {
-
fragmentTransaction.hide(mFraMe);
-
}
-
if (mFraChat !=
null) {
-
fragmentTransaction.hide(mFraChat);
-
}
-
if (mFraStar !=
null) {
-
fragmentTransaction.hide(mFraStar);
-
}
-
}
Fragment 优化
onAttachFragment 此方法防止重叠
场景:当应用内存紧张的时候,系统会回收掉 Frament对象;
再次进入的时候会重新创建Fragment,并非原来的对象,我们无法控制,导致重叠
-
@Override
-
public void onAttachFragment(Fragment fragment) {
-
if (mFraStar !=
null && fragment
instanceof StarFragment) {
-
mFraStar = (StarFragment) fragment;
-
}
-
-
if (mFraChat !=
null && fragment
instanceof ChatFragment) {
-
mFraChat = (ChatFragment) fragment;
-
}
-
-
if (mFraMe !=
null && fragment
instanceof MeFragment) {
-
mFraMe = (MeFragment) fragment;
-
}
-
-
if (mFraSquare !=
null && fragment
instanceof SquareFragment) {
-
mFraSquare = (SquareFragment) fragment;
-
}
-
}
转载:https://blog.csdn.net/HeartCircle/article/details/106099499
查看评论