我的简单Android应用程序不显示选项菜单

问题描述:

我试图在Android中使用AndEngine开发一个简单的应用程序。我想添加选项菜单,但由于某些原因,它不显示。令人惊讶的是,选项菜单按钮甚至没有显示! (页面右下方的3点触摸按钮)。怎么了?我的简单Android应用程序不显示选项菜单

编辑:我已经有menu.xml。它仍然不起作用。

enter image description here

这里是对应于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); 
      } 
     } 


    } 
+1

添加的代码在'菜单。 xml'文件。它在你的项目的'res'文件夹中。 –

+0

@SamratDutta那么,最初的AndEngine示例项目甚至没有menu.xml文件,但它在那里工作!我有我的项目。我应该输入哪些代码? –

+1

是的,我查过了。您不需要menu.xml中的代码,因为菜单项是动态生成的。我正在研究它。 –

您需要在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; 
} 
+0

我已经有menu.xml,但它不适用于我 –

+0

@tina_jasmin你用onCreateOptionsMenu方法膨胀它吗?它是否有项目?你使用的是ActionBarActivity吗?你在引擎的例子中看到的是DIA它膨胀菜单? – jujyfruits

+0

我只是简单地遵循AndEngine示例代码的源代码:https://github.com/nicolasgramlich/AndEngineExamples/blob/GLES2/src/org/andengine/examples/TextMenuExample.java –