java如何隐藏所有其他片段
为了练习编码,我正在制作一个小游戏
目前我添加了一个选项菜单,如果选择了一个项目,就会显示一个新的片段。谢谢,很好
我的问题是,游戏碎片永远不应该被销毁。只是隐藏
如果我在下面使用代码,两个框架(关于和帮助)可以同时存在。但是如果我在R.id.container上使用replace,游戏片段就会停止(里面有一个计时器)
以下是我的Java代码:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case 安卓.R.id.home:
getActionBar().setDisplayHomeAsUpEnabled(false);
getActionBar().setHomeButtonEnabled(false);
getFragmentManager().popBackStack();
return true;
case R.id.action_about:
if (getFragmentManager().findFragmentByTag("about_fragment") == null) {
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeButtonEnabled(true);
// Gets the game fragement so it can be hidden
Fragment fragment = getFragmentManager().findFragmentByTag("game_fragment");
getFragmentManager().beginTransaction()
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
.add(R.id.container, new AboutFragment(), "about_fragment")
.hide(fragment)
.addToBackStack("about_fragment")
.commit();
return true;
}
return true;
case R.id.action_help:
if (getFragmentManager().findFragmentByTag("help_fragment") == null) {
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeButtonEnabled(true);
// Gets the game fragement so it can be hidden
Fragment fragment = getFragmentManager().findFragmentByTag("game_fragment");
getFragmentManager().beginTransaction()
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
.add(R.id.container, new HelpFragment(), "help_fragment")
.hide(fragment)
.addToBackStack("help_fragment")
.commit();
return true;
}
return true;
default:
return super.onOptionsItemSelected(item);
}
下面是我的XML和容器:
<FrameLayout xmlns:安卓="http://schemas.安卓.com/apk/res/安卓"
xmlns:tools="http://schemas.安卓.com/tools"
安卓:id="@+id/container"
安卓:layout_width="match_parent"
安卓:layout_height="match_parent"
tools:context=".DoNothingGame"
tools:ignore="MergeRootFrame" />
我可以在开关中的每种情况下询问是否显示并隐藏了其他片段,但我认为如果我使用10或20个菜单项,代码会爆炸很多
所以。。有没有办法隐藏每一个片段,除了新的
谢谢你的帮助
# 1 楼答案
也许有点晚了,但我还是这样实施了: