我的简单Android应用程序不显示选项菜单
我试图在Android中使用AndEngine开发一个简单的应用程序。我想添加选项菜单,但由于某些原因,它不显示。令人惊讶的是,选项菜单按钮甚至没有显示! (页面右下方的3点触摸按钮)。怎么了?我的简单Android应用程序不显示选项菜单
编辑:我已经有menu.xml
。它仍然不起作用。
这里是对应于MenuScene
(AndEngine的示例代码here)
public class MainActivity extends SimpleBaseGameActivity implements IOnMenuItemClickListener {
private static int CAMERA_WIDTH ;
private static int CAMERA_HEIGHT;
protected static final int MENU_ADD = 0;
protected static final int MENU_QUIT = MENU_ADD + 1;
private Font mFont,menuFont;
private MenuScene mMenuScene;
Camera camera;
Scene scene;
@Override
public EngineOptions onCreateEngineOptions() {
//default code
}
@Override
public void onCreateResources() throws IOException {
//some code
}
@Override
public Scene onCreateScene() {
//some code
}
@Override
public boolean onMenuItemClicked(final MenuScene pMenuScene, final IMenuItem pMenuItem, final float pMenuItemLocalX, final float pMenuItemLocalY) {
switch(pMenuItem.getID()) {
case MENU_ADD:
/* Restart the animation. */
Log.i("hello", "Menu ADD CLICKED");
return true;
case MENU_QUIT:
/* End Activity. */
this.finish();
return true;
default:
return false;
}
}
protected MenuScene createMenuScene() {
final MenuScene menuScene = new MenuScene(this.camera, new AlphaMenuSceneAnimator());
final IMenuItem resetMenuItem = new ColorMenuItemDecorator(new TextMenuItem(MENU_ADD, this.menuFont, "ADD ITEM", this.getVertexBufferObjectManager()), new Color(1,0,0), new Color(0,0,0));
menuScene.addMenuItem(resetMenuItem);
final IMenuItem quitMenuItem = new ColorMenuItemDecorator(new TextMenuItem(MENU_QUIT, this.menuFont, "QUIT", this.getVertexBufferObjectManager()), new Color(1,0,0), new Color(0,0,0));
menuScene.addMenuItem(quitMenuItem);
menuScene.buildAnimations();
menuScene.setBackgroundEnabled(false);
menuScene.setOnMenuItemClickListener(this);
return menuScene;
}
@Override
public boolean onKeyDown(final int pKeyCode, final KeyEvent pEvent) {
if(pKeyCode == KeyEvent.KEYCODE_MENU && pEvent.getAction() == KeyEvent.ACTION_DOWN) {
if(this.scene.hasChildScene()) {
/* Remove the menu and reset it. */
this.mMenuScene.back();
} else {
/* Attach the menu. */
this.scene.setChildScene(this.mMenuScene, false, true, true);
}
return true;
} else {
return super.onKeyDown(pKeyCode, pEvent);
}
}
}
您需要在res/menu
文件夹中添加一个menu.xml
的一段代码。此文件将包含的项目列表中,格式如下列表:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/action_settings" android:title="@string/action_settings"
android:orderInCategory="100" app:showAsAction="never" />
</menu>
您还需要从您的活动膨胀的菜单就像这样:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu, menu);
return true;
}
我已经有menu.xml,但它不适用于我 –
@tina_jasmin你用onCreateOptionsMenu方法膨胀它吗?它是否有项目?你使用的是ActionBarActivity吗?你在引擎的例子中看到的是DIA它膨胀菜单? – jujyfruits
我只是简单地遵循AndEngine示例代码的源代码:https://github.com/nicolasgramlich/AndEngineExamples/blob/GLES2/src/org/andengine/examples/TextMenuExample.java –
添加的代码在'菜单。 xml'文件。它在你的项目的'res'文件夹中。 –
@SamratDutta那么,最初的AndEngine示例项目甚至没有menu.xml文件,但它在那里工作!我有我的项目。我应该输入哪些代码? –
是的,我查过了。您不需要menu.xml中的代码,因为菜单项是动态生成的。我正在研究它。 –