<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/next_page"
android:title="@string/next"
android:onClick="next_page"
android:showAsAction="ifRoom|withText"
android:orderInCategory="2" />
<item android:id="@+id/begin_calc"
android:title="@string/begin"
android:onClick="initial_values"
android:showAsAction="ifRoom|withText"
android:orderInCategory="1" />
</menu>
为什么这在 Nexus 7 上运行良好,但在加载时崩溃,在另外两部运行 android 4.0.4 和 4.0.3 的新手机上?
它在模拟器上也运行良好:清单包括:
<application
android:uiOptions="splitActionBarWhenNarrow"
在模拟器上可以正常工作
如果我删除 onClick 线,它将在手机上运行,但显然这些线是重点
没关系 :)
我找到了另一种可行的方法,忘记使用 onClick xml,改用:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.next_page_u_fool:
startActivity(new Intent(this, A02_Second_page.class));
break;
case R.id.action_settings:
startActivity(new Intent(this, A01_First_page.class));
break;
case R.id.begin_calc_or_puke:
read_fields_first_page();
startActivity(new Intent(this, Rvb_Initial_values_1.class));
break;
default:
break;
}
return true;
}
在 public boolean onCreateOptionsMenu(Menu menu) {
Eclipse 吐出以下内容:
AndroidRuntime(25734):致命异常:主要AndroidRuntime(25734):android.view.InflateException:无法解析android.view.ContextThemeWrapper类中的菜单项onClick处理程序next_page AndroidRuntime(25734):在android.view.MenuInflater$InflatedOnMenuItemClickListener。 (MenuInflater.java:202) AndroidRuntime(25734): 在 android.view.MenuInflater$MenuState.setItem(MenuInflater.java:402) AndroidRuntime(25734): 在 android.view.MenuInflater$MenuState.addItem(MenuInflater.java:436 ) AndroidRuntime(25734): 在 android.view.MenuInflater.parseMenu(MenuInflater.java:173) AndroidRuntime(25734): 在 android.view.MenuInflater.inflate(MenuInflater.java:95) AndroidRuntime(25734): 在 (我的包等).A01_First_page.onCreateOptionsMenu(A01_First_page.java:54)AndroidRuntime(25734):在android.app.Activity.onCreatePanelMenu(Activity.java:2501) AndroidRuntime(25734): 在 com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:415) AndroidRuntime(25734): 在 com.android.internal.policy.impl.PhoneWindow.invalidatePanelMenu(PhoneWindow. java:805) AndroidRuntime(25734): 在 com.android.internal.policy.impl.PhoneWindow$1.run(PhoneWindow.java:2985) AndroidRuntime(25734): 在 android.os.Handler.handleCallback(Handler.java:605 ) AndroidRuntime(25734): 在 android.os.Handler.dispatchMessage(Handler.java:92) AndroidRuntime(25734): 在 android.os.Looper.loop(Looper.java:154) AndroidRuntime(25734): 在 android.app .ActivityThread.main(ActivityThread.java:4945) AndroidRuntime(25734): 在 java.lang.reflect.Method.invokeNative(Native Method) AndroidRuntime(25734): 在 java.lang.reflect.Method.invoke(Method.java: 511)AndroidRuntime(25734):在 com.android.internal.os。ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) AndroidRuntime(25734): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) AndroidRuntime(25734): at dalvik.system.NativeStart.main(本机方法)AndroidRuntime(25734):引起:java.lang.NoSuchMethodException:next_page [interface android.view.MenuItem] AndroidRuntime(25734):在java.lang.Class.getConstructorOrMethod(Class.java:460)AndroidRuntime(25734) : 在 java.lang.Class.getMethod(Class.java:915) AndroidRuntime(25734): 在 android.view.MenuInflater$InflatedOnMenuItemClickListener.(MenuInflater.java:200) AndroidRuntime(25734): ... 还有 18 个java.lang.NoSuchMethodException: next_page [interface android.view.MenuItem] AndroidRuntime(25734): at java.lang.Class.getConstructorOrMethod(Class.java:460) AndroidRuntime(25734): at java.lang.Class.getMethod(Class .java:915) AndroidRuntime(25734): 在 android.view.MenuInflater$InflatedOnMenuItemClickListener.(MenuInflater.java:200) AndroidRuntime(25734): ... 还有 18 个java.lang.NoSuchMethodException: next_page [interface android.view.MenuItem] AndroidRuntime(25734): at java.lang.Class.getConstructorOrMethod(Class.java:460) AndroidRuntime(25734): at java.lang.Class.getMethod(Class .java:915) AndroidRuntime(25734): 在 android.view.MenuInflater$InflatedOnMenuItemClickListener.(MenuInflater.java:200) AndroidRuntime(25734): ... 还有 18 个