基本上我有一个具有单个 Activity 和 5 个片段的应用程序。由于创建片段布局需要一秒钟的时间,因此我更改了方法,使其不重新创建片段,而只是隐藏和显示它们。
private void openFragment(int index)
{
if(index == activeFragment)
{
return;
}
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
//Set animations
if(activeFragment < index)
{
ft.setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left);
} else {
ft.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right);
}
//Hide old Fragment
if (Fragments.get(activeFragment).isAdded())
{
ft.hide(Fragments.get(activeFragment));
Fragments.get(activeFragment).getView().setTranslationZ(0);
}
//Add/Show new Fragment
if (Fragments.get(index).isAdded())
{ // if the fragment is already in container
ft.show(Fragments.get(index));
Fragments.get(index).getView().setTranslationZ(1f);
} else { // fragment needs to be added to frame container
ft.add(R.id.fragment_container, Fragments.get(index), Integer.toString(index));
}
// Commit changes
ft.commit();
} …Run Code Online (Sandbox Code Playgroud)