问题:从片段1切换到片段2,切换发生,但两者都可见. (片段2成为焦点)
片段1是MenuFragment
片段2是GameFragment
我相信这是发生的,因为我的片段1包含在我的主activity.xml中
<fragment androID:ID="@+ID/menu_fragment" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" tools:layout="@layout/fragment_menu"> </fragment>
main.xml中的代码将片段加载到主活动中.每当我使用以下代码用游戏片段替换菜单片段时:
public voID replaceFragment(Fragment fragment) { FragmentManager fragmentManager = getSupportFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); fragmentTransaction.replace(R.ID.gamevIEw_layout, gameFragment); fragmentTransaction.addToBackStack(fragment.toString()); fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); fragmentTransaction.commit();}
游戏片段出现并叠加在菜单片段上方.如何让菜单片段消失?我确信一个简单的修复方法是makeVisible(false)或类似的东西,但我相信真正的问题是在xml文件中编程以包含MenuFragment.
问题:如何在main.java类中编程以在create上加载片段?
我想这样做,所以我可以编程它来加载片段1(MenuFragment),而不是它已经在那里.两者都可见的唯一原因是因为片段1包含在我的main.xml中
解决方法:
您应该创建单个FrameLayout(或任何其他),而不是创建两个片段,并在切换期间替换帧布局,如下例所示.
XML
<FrameLayout androID:ID="@+ID/frameContainer" androID:layout_wIDth="match_parent" androID:layout_height="match_parent"/>
Java的
public voID replaceFragment(Fragment fragment) { FragmentManager fragmentManager = getSupportFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); fragmentTransaction.replace(R.ID.frameContainer, fragment); fragmentTransaction.addToBackStack(fragment.toString()); fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); fragmentTransaction.commit();}
总结 以上是内存溢出为你收集整理的android – 在Activity OnCreate中加载片段全部内容,希望文章能够帮你解决android – 在Activity OnCreate中加载片段所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)