Jas*_*n J 3 android load fragment android-fragments
问题:从片段1切换到片段2,切换发生,但两者都可见.(片段2成为焦点)
片段1是MenuFragment Fragment 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>
Run Code Online (Sandbox Code Playgroud)
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();
}
Run Code Online (Sandbox Code Playgroud)
游戏片段出现并叠加在菜单片段上方.如何让菜单片段消失?我确信一个简单的修复方法是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"/>
Run Code Online (Sandbox Code Playgroud)
Java的
fun replaceFragment(fragment:Fragment){
supportFragmentManager
.beginTransaction()
.replace(R.id.frameContainer, fragment)
.commit()
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14057 次 |
| 最近记录: |