Definiuję elementy menu w XML i próbuję użyć atrybutu onClick, który został dodany w interfejsie API 11. Kiedy działanie jest uruchamiane w emulatorze z wersją 4.0.3, następującymi wyjątkami wystąpić:InflateException: Nie można rozstrzygnąć pozycji menu onClick handler
FATAL EXCEPTION: main
android.view.InflateException: Couldn't resolve menu item onClick handler
onFeedbackMenu in class android.view.ContextThemeWrapper
...
Caused by: java.lang.NoSuchMethodException: onFeedbackMenu
[interface com.actionbarsherlock.view.MenuItem]
at java.lang.Class.getConstructorOrMethod(Class.java:460)
ja nie rozumiem, co jest przyczyną wyjątku, ponieważ następujący sposób definiuje się w mojej działalności
import com.actionbarsherlock.view.MenuItem;
...
public void onFeedbackMenu(MenuItem menuItem) {
Toast.makeText(this, "onFeedBack", Toast.LENGTH_LONG).show();
}
Moja definicja menu plik XML zawiera:
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
...
<item
android:id="@+id/menu_feedback"
android:icon="@drawable/ic_action_share"
android:showAsAction="ifRoom"
android:title="@string/menu_feedback"
android:onClick="onFeedbackMenu" />
</menu>
W celu zapewnienia kompatybilności wstecz używam ActionBarSherlock, a także uzyskuję bardzo podobny wyjątek po uruchomieniu aplikacji w wersji 2.3.x.
To jest bardziej kompletna wersja stosu prześledzić
FATAL EXCEPTION: main
android.view.InflateException: Couldn't resolve menu item onClick handler
onFeedbackMenu in class android.view.ContextThemeWrapper
at com.actionbarsherlock.view.MenuInflater$InflatedOnMenuItemClickListener.<init>(MenuInflater.java:204)
at com.actionbarsherlock.view.MenuInflater$MenuState.setItem(MenuInflater.java:410)
at com.actionbarsherlock.view.MenuInflater$MenuState.addItem(MenuInflater.java:445)
at com.actionbarsherlock.view.MenuInflater.parseMenu(MenuInflater.java:175)
at com.actionbarsherlock.view.MenuInflater.inflate(MenuInflater.java:97)
...
Caused by: java.lang.NoSuchMethodException: onFeedbackMenu
[interface com.actionbarsherlock.view.MenuItem]
at java.lang.Class.getConstructorOrMethod(Class.java:460)
at java.lang.Class.getMethod(Class.java:915)
at com.actionbarsherlock.view.MenuInflater$InflatedOnMenuItemClickListener.<init>(MenuInflater.java:202)
... 23 more
Mam ten sam problem i wydaje się, że jest on związany z zastosowaniem niestandardowego motywu w ActionBarSherlock, ale nie jestem pewien ... Czy używasz niestandardowego motywu? – Zharf
Tak, używam niestandardowego motywu. –
Tak, to się dzieje dla mnie na prawdziwym urządzeniu 4.0.3, ale nie w emulatorze 4.1. Mogę tylko założyć, że to błąd w systemie Android, który został naprawiony. Nie używam ActionBarSherlock. – Timmmm