只是为了编码练习,我正在创建一个小游戏。
目前我添加了一个optionmenu,如果选择了一个项目,则会显示一个新的片段。谢谢你的工作。
我的问题是游戏片段永远不会被破坏。只有隐藏。
如果我在下面使用我的代码,那么两个框架(about和help)可以同时存在。但是如果我在R.id.container上使用替换,游戏片段将停止(那里有一个计时器)。
这是我的Java代码:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.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:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".DoNothingGame"
tools:ignore="MergeRootFrame" />
我可以在交换机的每个案例中询问是否显示其他片段并隐藏它们,但我认为如果我使用10或20个菜单项,代码会爆炸很多。
那么..有没有办法隐藏除新的片段之外的每个片段?
感谢您的帮助!
答案 0 :(得分:0)
也许有点晚了,但我设法这样实现:
SELECT product.name, AVG(product.product_price)
from product
inner join orderline on product.product_id = orderline.product_id
inner join orders on orderline.order_id = orders.order_id
inner join customer on orders.cust_id = customer.cust_id
WHERE customer.city LIKE 'Tuscon'
group by product.name