“No keyboard for id 0” - what does it mean?

2020-02-09 14:53发布

问题:

Each time my Optionsmenu opens (onCreateOptionsMenu(..) is called), I get these warnings:

"No keyboard for id 0"

and

"Using default keyMap: /system/usr/keychars/qwerty.kcm.bin"

I couldn't find out what they mean, does anyone know ? I didn't like this answer.

Here's the simple code I'm using:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    super.onCreateOptionsMenu(menu);
    getMenuInflater().inflate(R.menu.optmenu_start, menu);
    return true;
}

and the optmenu_start.xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android">
  <item
    android:id="@+id/optmenu_prefs"
    android:title="@string/optmenu_prefs"
    android:icon="@drawable/icon_menu_prefs"
  />
  <item
    android:id="@+id/optmenu_help"
    android:title="@string/optmenu_help"
    android:icon="@drawable/icon_menu_help"
  />
</menu>

回答1:

Google's answer is

" The log is normal; it happens the first time a keymap is needed for a device in a process. "

http://groups.google.com/group/android-developers/browse_thread/thread/477caf755085b108

So therefore if you started Activity2 before Activity1 you would see the warning in Activity2 and not Activity1!

As I said I think a lot of developers get this message and it's just a warning not an error; it can be ignored.



回答2:

As @Blundell said, it's normal. But it always consumes the first keyPressed event. Finally, I add this on init:

setFocusableInTouchMode(true);

I don't know why, but this warning message never annoys me again.