我有两个片段和一些嵌套片段。我希望当我在这两个片段之间切换时,它会在childfragmentmanager的backstack顶部显示嵌套片段。 但是当我尝试显示它。 活动onBackPressed()方法
@Override
public void onBackPressed()
{
FragmentManager fm = getSupportFragmentManager();
for (Fragment frag : fm.getFragments())
{
if (frag!=null && frag.isVisible())
{
FragmentManager childFm = frag.getChildFragmentManager();
if (childFm.getBackStackEntryCount() > 0)
{
childFm.popBackStack();
return;
}
else
{
if(type==1)
{
((FragmentBottomBarCustomer)getSupportFragmentManager().findFragmentByTag("FragmentBottomBarCustomer")).onBackPressed();
return;
}
else
{
((FragmentBottomBarShop)getSupportFragmentManager().findFragmentByTag("FragmentBottomBarShop")).onBackPressed();
return;
}
}
}
}
super.onBackPressed();
}
切换器onBackPressed()方法
public void onBackPressed()
{
if(listMainFragment.size()==1)
{
getActivity().finish();
}
else if(listMainFragment.size()>1)
{
listMainFragment.pop();
currentFragment=listMainFragment.peek().getClass().getName().substring(listMainFragment.peek().getClass().getName().lastIndexOf(".")+1);
if(listMainFragment.peek().getChildFragmentManager().getBackStackEntryCount()>0)
{
FragmentTransaction ft=listMainFragment.peek().getChildFragmentManager().beginTransaction();
ft.replace(R.id.frame_child,getCurrentFragment(listMainFragment.peek().getChildFragmentManager()));
ft.commit();
}
else
{
FragmentTransaction ft=getActivity().getSupportFragmentManager().beginTransaction();
ft.replace(R.id.frame_container,listMainFragment.peek());
ft.commit();
setselected();
}
}
else
{
getActivity().finish();
}
}
它给我这个错误
10-04 04:22:09.992: E/AndroidRuntime(31615): FATAL EXCEPTION: main
10-04 04:22:09.992: E/AndroidRuntime(31615): java.lang.IllegalStateException: No activity
10-04 04:22:09.992: E/AndroidRuntime(31615): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1091)
10-04 04:22:09.992: E/AndroidRuntime(31615): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1086)
10-04 04:22:09.992: E/AndroidRuntime(31615): at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:1884)
10-04 04:22:09.992: E/AndroidRuntime(31615): at android.support.v4.app.Fragment.performActivityCreated(Fragment.java:1514)
10-04 04:22:09.992: E/AndroidRuntime(31615): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:947)
10-04 04:22:09.992: E/AndroidRuntime(31615): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
10-04 04:22:09.992: E/AndroidRuntime(31615): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
10-04 04:22:09.992: E/AndroidRuntime(31615): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1467)
10-04 04:22:09.992: E/AndroidRuntime(31615): at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:440)
10-04 04:22:09.992: E/AndroidRuntime(31615): at android.os.Handler.handleCallback(Handler.java:725)
10-04 04:22:09.992: E/AndroidRuntime(31615): at android.os.Handler.dispatchMessage(Handler.java:92)
10-04 04:22:09.992: E/AndroidRuntime(31615): at android.os.Looper.loop(Looper.java:137)
10-04 04:22:09.992: E/AndroidRuntime(31615): at android.app.ActivityThread.main(ActivityThread.java:5283)
10-04 04:22:09.992: E/AndroidRuntime(31615): at java.lang.reflect.Method.invokeNative(Native Method)
10-04 04:22:09.992: E/AndroidRuntime(31615): at java.lang.reflect.Method.invoke(Method.java:511)
10-04 04:22:09.992: E/AndroidRuntime(31615): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
10-04 04:22:09.992: E/AndroidRuntime(31615): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
10-04 04:22:09.992: E/AndroidRuntime(31615): at dalvik.system.NativeStart.main(Native Method)