作为我在这里发表的第一篇文章,我将努力尽可能准确。
要点:
我无法开展工作options menu
。按下菜单按钮时,会出现一个空的黑色菜单。有适当数量的项目(您可以“看到”按下的按钮)但忽略了android:title
,onCreateOptionsMenu
会触发警告,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 up和an 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
是问题,但这并不能解释为什么这些项目没有响应。