在构建版本25.2.0中分段回写堆栈问题

时间:2017-03-07 08:57:53

标签: android android-fragments build.gradle

我在我的项目中使用片段,我在最近的android构建版本 JsonObject jo = new JsonObject(); jo.addProperty("name", "path"); JsonArray jsonArray = new JsonArray(); jsonArray.add("my-path"); jsonArray.add("my-path2"); jsonArray.add("my-new-path"); jo.add("value", jsonArray); System.out.println(jo); 中面临一个问题,即清除片段无法正常工作。

让我解释一下我的问题。

最初我添加了 DbFragmentView()片段类,而没有在backStack上添加它。

25.2.0

对于所有其他片段,我将它添加到backstack使用下面的methond

  getSupportFragmentManager().beginTransaction().replace(R.id.frame_container, new DbFragmentView()).commit();

在某些情况下,我需要清除所有背包片段,因为我使用的是代码

   @Override
    public void replaceFragment(Fragment fragment, String Title) {
        String backStateName = fragment.getClass().getName();
        FragmentManager manager = getSupportFragmentManager();
        boolean fragmentPopped = manager.popBackStackImmediate(backStateName, 0);

        if (!fragmentPopped) { //fragment not in back stack, create it.
            FragmentTransaction ft = manager.beginTransaction();
            ft.replace(R.id.frame_container, fragment, fragment.toString());
            ft.addToBackStack(backStateName);
            ft.commit();
            getSupportActionBar().setDisplayShowTitleEnabled(true);
            getSupportActionBar().setTitle(Title);
        }
    }

在将构建版本更改为if (getFragmentManager().getBackStackEntryCount() > 0) { getFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE); } 之前,一切都运行良好。

但在我将构建版本从25.2.0更改为25.1.0之后,上面的代码清除了我的所有片段,然后又返回到我的第一个 DbFragmentView()片段,但是视图没有出现。

调用了

25.2.0方法但View看起来很透明,所以我可以看到其他应用程序在后台。

然后我再次将构建版本更改为onCreateView,然后它照常工作。

任何人都可以告诉我解决此问题的解决方案

注意:此问题仅发生在最新版本25.1.0中。

1 个答案:

答案 0 :(得分:1)

Android最近更新了支持库版本,我在我的代码中对此进行了更改。现在这个问题已经解决了。

compile 'com.android.support:appcompat-v7:25.3.0'