选项菜单显示但为空

时间:2016-05-04 14:33:34

标签: android android-menu

作为我在这里发表的第一篇文章,我将努力尽可能准确。

要点: 我无法开展工作options menu。按下菜单按钮时,会出现一个空的黑色菜单。有适当数量的项目(您可以“看到”按下的按钮)但忽略了android:titleonCreateOptionsMenu会触发警告,onOptionsItemSelected始终为零。有关详细信息,请参见屏幕截图和输出。

我的环境: 我的开发环境是Debian Jessie 64bits。它在VM中运行。 android-sdk 是最新的。 android-ndk 是11b。 为了研究一个干净的基础,我建立了一个新的“Hello World”项目:

$ SDK=/path/to/android-sdk-linux/
$ $SDK/tools/android create project --target android-16 --path ~/projects/test --package com.arnaud.test --activity Test

代码: 它基本上是一个带有2个差异的“Hello World”:

RES /菜单/ menu.xml文件

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://shemas.android.com/apk/res/android">
    <item   android:id="@+id/menuFoo"
        android:title="Foo"
        android:showAsAction="ifRoom" />
    <item   android:id="@+id/menuBar"
        android:title="Bar"
        android:showAsAction="never" />
    <item   android:id="@+id/menuBaz"
        android:title="Baz"
        android:showAsAction="always"/>
</menu>

的src / COM /阿诺/ SRC / Test.java

package com.arnaud.test;

import android.app.Activity;
import android.os.Bundle;

import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;

public class Test extends Activity
{
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }

    /** Build the menu*/
    @Override
    public boolean onCreateOptionsMenu (Menu menu)
    {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menu,menu);

        return true;
    }
    @Override
    public boolean onOptionsItemSelected (MenuItem item) {
        Log.w("Menu","Id clicked: "+item.getItemId());
    switch (item.getItemId()) {
        case R.id.menuFoo:
            Log.w("Menu","Foo");
            return true;
        case R.id.menuBar:
            Log.w("Menu","Bar");
            return true;
        case R.id.menuBaz:
            Log.w("Menu","Baz");
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
    }
}

输出 在Kitkat和Marshmallow是相同的。这里有3个截图和logcat输出。 menu shows upan item is clicked


    -- Here I click on the menu button --
    05-04 16:02:37.719  1701  1701 D EmojiAltPhysicalKeyDetector: onKeyUp() : KeyEvent { action=ACTION_UP, keyCode=KEYCODE_MENU, scanCode=0, metaState=0, flags=0x8, repeatCount=0, eventTime=3226804, downTime=3226804, deviceId=-1, source=0x101 }
    05-04 16:02:37.719  1701  1701 D EmojiAltPhysicalKeyDetector: onKeyUp() : Disabled
    05-04 16:02:37.727   933  1205 D AudioService: Stream muted, skip playback

    -- Here I blindly selected one of the three items --
    05-04 16:02:42.023  3663  3663 W Menu: Id clicked:   0  -- No item is passed apparently.
    05-04 16:02:42.032   933  1973 W InputMethodManagerService: Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@6c70840 attribute=null, token = android.os.BinderProxy@93c26bc -- The warning.

就是这样。我一直想知道是否缺少styles.xml是问题,但这并不能解释为什么这些项目没有响应。

0 个答案:

没有答案