在活动OnCreate中加载片段

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中

Sag*_*ain 9

您应该创建单个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)

  • 很高兴知道我在指示.继续做android开发.你觉得你做得很好. (2认同)