所以我有四个片段(A,B,C和D)。我使用按钮在它们之间导航,如果我从A到B,从B到A再次加载A,我不希望它发生。
这是我正在调用将片段加载到容器中的代码:
public void showNewFragment(Class<? extends Fragment> fragmentClass, Integer whereToPlaceId, Bundle bundle)
{
String tag = fragmentClass.getSimpleName();
FragmentManager fm = getSupportFragmentManager();
boolean inStack = fm.popBackStackImmediate(tag,0);
FragmentTransaction fragTM = fm.beginTransaction();
if(!inStack) {
try {
fragTM.add(whereToPlaceId, fragmentClass.newInstance(), tag);
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
fragTM.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
fragTM.addToBackStack(tag);
fragTM.commit();
}
我也尝试使用onSaveInstanceState,但只在进行配置更改时调用它。
同样在保存此片段的活动中,我禁用了后退按钮导航。
我在片段
中这样做了 public static View rootView = null;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if(rootView != null)
return rootView;
//if not init rootView
return rootView;
}
这是好方法吗?