【发布时间】:2017-07-10 16:57:25
【问题描述】:
问题:从片段 1 切换到片段 2,发生了切换,但两者都是可见的。 (片段2成为焦点)
Fragment 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 类中编写程序以在创建时加载片段?
我想这样做,所以我可以对其进行编程以首先加载片段 1(MenuFragment),而无需它已经存在。两者都可见的唯一原因是片段 1 包含在我的 main.xml 中
【问题讨论】:
-
您如何最初动态创建片段? 我动态创建了片段 2,但片段 1 (MenuFragment) 是静态创建的,这就是它留在那里的原因。我使用相同的 replaceFragment 代码将 Fragment 1 动态地放入视图中并且它可以工作,但是 findViewByIds 让它崩溃了。我不得不将其注释掉,现在我无法测试 onClickListener 以查看它是否进入 Fragment 2
-
修复了所有问题。 解决方案: 1) 不要在 xml 文件中静态编程片段 2) 使用代码 Here
标签: android android-fragments fragment load