0
<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 个

4

1 回答 1

0

对于将来可能遇到此问题的任何人...首先-使用XML-我认为您需要将 next_page 和 initial_values 作为活动中的方法...

public void next_page(View v){
    ...
}

public void initial_values(View v){
    ...
}

如上所述,您还可以使用 onOptionsItemSelected

于 2013-06-01T15:16:02.447 回答