小编AnZ*_*Zya的帖子

片段BackStack.片段即使在流行后也会重叠.

问题是正确管理后台堆栈,以便先前(或删除)前一个片段.问题在于它们的重叠......

程序结构如下:

  • 滑动菜单与每个区段3个片段:CatalogFragment,NewsFragment,BlogFragment;
  • 每个片段都是带有项目的listView(从JSON解析);
  • CatalogFragment的项目点击我需要更换这个CatalogFragmentLessonsFragment,这是名单也.

ps项目是俄语,但我认为你可以理解

在此输入图像描述

这是添加(动态)这些片段的方式:

    @Override
public void onNavigationDrawerItemSelected(int position) {
    FragmentManager fragmentManager = getSupportFragmentManager();
//        fragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE); //this also doesn't work

    switch (position+1) {
        case 1:
            //getSupportFragmentManager().popBackStack(); // this doesnt work
            fragmentManager.beginTransaction().replace(R.id.container,
                    CatalogFragment.newInstance(position + 1)).addToBackStack("catalog").commit();

            break;
        case 2:
            fragmentManager.beginTransaction().replace(R.id.container,
                    NewsFragment.newInstance(position + 1)).addToBackStack("news").commit();

            break;
        case 3:
            fragmentManager.beginTransaction().replace(R.id.container,
                    BlogFragment.newInstance(position + 1)).addToBackStack("blog").commit();
            break;
    }
}
Run Code Online (Sandbox Code Playgroud)

这就是我如何用onCatalogFragmentInteraction接口中的方法替换片段中的新片段:

    /** Methods for interaction with list items*/
@Override
public void …
Run Code Online (Sandbox Code Playgroud)

android overlapping android-fragments fragment-backstack

3
推荐指数
1
解决办法
9275
查看次数

碎片在方向变化时崩溃

每次方向更改片段崩溃都会出错:

01-26 12:46:43.215    2895-2895/com.cbsystematic.mobile.itvdn 

E/AndroidRuntime? FATAL EXCEPTION: main
    Process: com.cbsystematic.mobile.itvdn, PID: 2895
    java.lang.RuntimeException: Unable to destroy activity {com.cbsystematic.mobile.itvdn/com.cbsystematic.mobile.itvdn.NavigationActivity}: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
            at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3671)
            at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3689)
            at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3889)
            at android.app.ActivityThread.access$900(ActivityThread.java:144)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1284)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5221)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
     Caused by: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
            at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1365)
            at android.support.v4.app.FragmentManagerImpl.popBackStackImmediate(FragmentManager.java:516)
            at com.cbsystematic.mobile.itvdn.LessonsFragment.replaceFragment(LessonsFragment.java:126)
            at com.cbsystematic.mobile.itvdn.LessonsFragment.onDetach(LessonsFragment.java:119)
            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1080)
            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1126)
            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1108)
            at android.support.v4.app.FragmentManagerImpl.dispatchDestroy(FragmentManager.java:1954)
            at android.support.v4.app.FragmentActivity.onDestroy(FragmentActivity.java:313)
            at …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-fragments

0
推荐指数
1
解决办法
1367
查看次数