以前的片段在新片段下可见

时间:2015-09-23 12:04:28

标签: android listview android-fragments

我有一个带有ViewPager的TabLayout。 ViewPager有四个片段F1,F2,F3和F4。 F1包含一个FrameLayout,它可以有2个片段F11和F12。最初我在FrameLayout中使用以下代码添加F11。

Fragment11 fragment11 = new Fragment11();
fragment11.setArguments(getActivity().getIntent().getExtras());
getActivity().getSupportFragmentManager().beginTransaction()
                .add(R.id.fragment_container, fragment11, Constants.FRAGMENT_11)
                .commit();

F11包含ListView。当我单击此ListView中的任何项目/行时,F11将替换为F12。 F12是一个细节片段。

Fragment12 fragment12 = new Fragment12();
FragmentTransaction fragmentTransaction = getActivity().getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.fragment_container, fragment12, Constants.FRAGMENT_12)
                    .addToBackStack(null)
                    .commit();

对于正常的应用流程,它运行正常。现在假设我现在在Fragment12中并按下主页按钮。现在我打开任何繁重的应用程序(相机或任何其他应用程序)从内存中删除我的应用程序。现在我又开始了我的应用程序。

现在有两个Fragment11和一个Fragment12可见,都在同一时间。当我按下时,Fragment12被移除,现在可以看到两个Fragment11。当我单击Fragment11的ListView行时,顶部的Fragment11将被Fragment12替换,但是底部的Fragment11仍然存在。

这就是我想要的: 当应用程序从后台到达前台时,Fragment12应该是可见的,当我按下时,应该弹出Fragment12以显示Fragment11。

我该怎么做?

2 个答案:

答案 0 :(得分:9)

我知道为时已晚,但这个答案可以帮助别人。它不是一个合适的解决方案,但它为我工作。因此,请将android:clickable="true"android:background="?android:attr/colorBackground"放在片段的根视图中。希望这会奏效。

答案 1 :(得分:0)

我遇到了同样的问题。但我也找不到合适的解决方案。在我的情况下,当我打开多个应用程序并且它们返回到我的应用程序时,它会导致与您身边发生的碎片相同的问题。但我让我的应用程序稳定。我通过以下解决方案完成了这项工作:

  1. 当您的应用程序从内存中删除后,再次打开应用程序,然后打开要在其中显示碎片的MainActivity的onCreate()方法。

  2. 这里我检查了backstackEntrycount,如果它大于0,则删除所有片段并显示基本片段。

        <nav id="site-navigation" class="main-navigation" role="navigation">
            <div class="col-width">
    
                  <script>
                  $(function() {
                  $( "#openclose" ).click(function(){
                      $( ".menu-toggle" ).switchClass( "menu-toggle", "menu-close", 1000 );
                      $( ".menu-close" ).switchClass( "menu-close", "menu-toggle", 1000 );
                  });
                  });
                  </script>
                <div id="openclose" class="menu-toggle"><?php _e( 'Menu', 'theme-name' ); ?></div>
                <a class="skip-link screen-reader-text" href="#content"><?php _e( 'Skip to content', 'theme-name' ); ?></a>
                </div>
    
                <?php wp_nav_menu( array('theme_location' => 'primary', 'menu_class' => 'nav-menu' ) ); ?>
            </div>
        </nav><!-- #site-navigation -->
    
  3. 希望它会有所帮助!