Android片段仍然是背景

时间:2016-10-25 09:19:17

标签: android android-fragments background fragment mapfragment

  • 我正在做一个带有几个标签的Android应用程序,就这么说吧 有两个标签。一个选项卡是“android.support.v4.app.Fragment” 包含一些文本字段和一个按钮,另一个是一个 “android.app.Fragment”同时是一个MapFragment。
  • 问题是第一次点击另一个 带有cardview的“android.support.v4.app.Fragment”(也支持)和 他们可以通过某种层次结构在他们之间导航。
  • 现在,如果首先在地图中点击一下,稍后点击其他标签即可 最后我点击按钮转到包含的框架 cardviews,我可以看到这些,但在后台我也看到了 MapFragment。
  • 我不知道如何解决这个问题。我试过用替换,删除, add,popBackStack,...另外我曾试图从中删除 rootview片段的框架,但没有发生任何事情。
  • 事实是我要把你的笔记本电脑扔出窗外。

提前致谢!

2 个答案:

答案 0 :(得分:0)

如果您使用.addToBackStack("")而不是删除此内容。并且每次用户.replace();方法为您的所有片段调用片段。

答案 1 :(得分:0)

我发现发生了什么事。它适用于两个不同的片段管理器(FragmentManagerSupportFragmentManager)。
根据要删除或替换的片段类型(支持或正常),您必须使用一个或另一个片段管理器。
我已经创建了一个枚举来知道哪种片段是活动的(为了删除)以及将要启动什么样的片段(为了替换)。
或多或少我做了这样的功能:

private void manageFragment (FragmentEnum nextFragment) {

        switch (activedFragment) {
            case SUPPORT:
                getSupportFragmentManager().beginTransaction().remove(fragmentSupport).commit();
                break;
            case NORMAL:
                getFragmentManager().beginTransaction().remove(fragmentNormal).commit();
                break;
        }

        activedFragment = nextFragment;

        switch (nextFragment) {
            case SUPPORT:
                getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, fragmentSupport).commit();
                break;
            case NORMAL:
                getFragmentManager().beginTransaction().replace(R.id.fragment_container, fragmentNormal).commit();
                break;
        }
    }