Java 我的应用程序崩溃,试图添加菜单

Java 我的应用程序崩溃,试图添加菜单,java,android,performance,menu,Java,Android,Performance,Menu,我在hello world的一个简单应用程序中添加了一个菜单!但我的应用程序一直崩溃。 我没有添加我的xml代码。我的xml文件名是res中menu文件夹中的menu。 这是我的java文件 MyActivity.java public boolean onCreateOptionsMenu(Menu menu1){ MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu,menu1);

我在hello world的一个简单应用程序中添加了一个菜单!但我的应用程序一直崩溃。 我没有添加我的xml代码。我的xml文件名是res中menu文件夹中的menu。 这是我的java文件

MyActivity.java

public boolean onCreateOptionsMenu(Menu menu1){
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu,menu1);                //line 19
    return true;
}
Logcat

    06-03 18:03:57.682 13542-13542/com.example.kaushalraj.a424 E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.kaushalraj.a424, PID: 13542
android.view.InflateException: Couldn't resolve menu item onClick handler action in class com.example.kaushalraj.a424.MainActivity
    at android.support.v7.view.SupportMenuInflater$InflatedOnMenuItemClickListener.<init>(SupportMenuInflater.java:253)
    at android.support.v7.view.SupportMenuInflater$MenuState.setItem(SupportMenuInflater.java:481)
    at android.support.v7.view.SupportMenuInflater$MenuState.addItem(SupportMenuInflater.java:529)
    at android.support.v7.view.SupportMenuInflater.parseMenu(SupportMenuInflater.java:205)
    at android.support.v7.view.SupportMenuInflater.inflate(SupportMenuInflater.java:127)
    at com.example.kaushalraj.a424.MainActivity.onCreateOptionsMenu(MainActivity.java:19)
    at android.app.Activity.onCreatePanelMenu(Activity.java:3388)
    at android.support.v4.app.FragmentActivity.onCreatePanelMenu(FragmentActivity.java:364)
    at android.support.v7.view.WindowCallbackWrapper.onCreatePanelMenu(WindowCallbackWrapper.java:93)
    at android.support.v7.app.AppCompatDelegateImplBase$AppCompatWindowCallbackBase.onCreatePanelMenu(AppCompatDelegateImplBase.java:332)
    at android.support.v7.app.AppCompatDelegateImplV9.preparePanel(AppCompatDelegateImplV9.java:1377)
    at android.support.v7.app.AppCompatDelegateImplV9.doInvalidatePanelMenu(AppCompatDelegateImplV9.java:1657)
    at android.support.v7.app.AppCompatDelegateImplV9$1.run(AppCompatDelegateImplV9.java:134)
    at android.os.Handler.handleCallback(Handler.java:790)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6494)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
 Caused by: java.lang.NoSuchMethodException: action [interface android.view.MenuItem]
    at java.lang.Class.getMethod(Class.java:2068)
    at java.lang.Class.getMethod(Class.java:1690)
    at android.support.v7.view.SupportMenuInflater$InflatedOnMenuItemClickListener.<init>(SupportMenuInflater.java:249)
    at android.support.v7.view.SupportMenuInflater$MenuState.setItem(SupportMenuInflater.java:481) 
    at android.support.v7.view.SupportMenuInflater$MenuState.addItem(SupportMenuInflater.java:529) 
    at android.support.v7.view.SupportMenuInflater.parseMenu(SupportMenuInflater.java:205) 
    at android.support.v7.view.SupportMenuInflater.inflate(SupportMenuInflater.java:127) 
    at com.example.kaushalraj.a424.MainActivity.onCreateOptionsMenu(MainActivity.java:19) 
    at android.app.Activity.onCreatePanelMenu(Activity.java:3388) 
    at android.support.v4.app.FragmentActivity.onCreatePanelMenu(FragmentActivity.java:364) 
    at android.support.v7.view.WindowCallbackWrapper.onCreatePanelMenu(WindowCallbackWrapper.java:93) 
    at android.support.v7.app.AppCompatDelegateImplBase$AppCompatWindowCallbackBase.onCreatePanelMenu(AppCompatDelegateImplBase.java:332) 
    at android.support.v7.app.AppCompatDelegateImplV9.preparePanel(AppCompatDelegateImplV9.java:1377) 
    at android.support.v7.app.AppCompatDelegateImplV9.doInvalidatePanelMenu(AppCompatDelegateImplV9.java:1657) 
    at android.support.v7.app.AppCompatDelegateImplV9$1.run(AppCompatDelegateImplV9.java:134) 
    at android.os.Handler.handleCallback(Handler.java:790) 
    at android.os.Handler.dispatchMessage(Handler.java:99) 
    at android.os.Looper.loop(Looper.java:164) 
    at android.app.ActivityThread.main(ActivityThread.java:6494) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807) 
06-03 18:03:57.682 13542-13542/com.example.kaushalraj.a424 E/AndroidRuntime:致命异常:main
流程:com.example.kaushalraj.a424,PID:13542
android.view.InflateException:无法解析com.example.kaushalraj.a424.MainActivity类中单击处理程序操作的菜单项
在android.support.v7.view.SupportMenuInflater$InflatedOnMenuItemClickListener上。(SupportMenuInflater.java:253)
位于android.support.v7.view.SupportMenuInflater$MenuState.setItem(SupportMenuInflater.java:481)
位于android.support.v7.view.SupportMenuInflater$MenuState.addItem(SupportMenuInflater.java:529)
在android.support.v7.view.SupportMenuInflater.parseMenu(SupportMenuInflater.java:205)中
在android.support.v7.view.SupportMenuInflater.inflate(SupportMenuInflater.java:127)中
位于com.example.kaushalraj.a424.MainActivity.onCreateOptions菜单(MainActivity.java:19)
位于android.app.Activity.onCreatePanelMenu(Activity.java:3388)
位于android.support.v4.app.FragmentActivity.onCreatePanelMenu(FragmentActivity.java:364)
在android.support.v7.view.WindowCallbackWrapper.onCreatePanelMenu(WindowCallbackWrapper.java:93)中
位于android.support.v7.app.AppCompateDelegateImplbase$AppCompateWindowCallBackbase.onCreatePanelMenu(AppCompateDelegateImplbase.java:332)
在android.support.v7.app.AppCompateDelegateImplV9.preparePanel(AppCompateDelegateImplV9.java:1377)
在android.support.v7.app.AppCompateDelegateImplv9.doInvalidatePanelMenu(AppCompateDelegateImplv9.java:1657)中
在android.support.v7.app.appcompatedelegateimplv9$1.run(appcompatedelegateimplv9.java:134)
位于android.os.Handler.handleCallback(Handler.java:790)
位于android.os.Handler.dispatchMessage(Handler.java:99)
位于android.os.Looper.loop(Looper.java:164)
位于android.app.ActivityThread.main(ActivityThread.java:6494)
位于java.lang.reflect.Method.invoke(本机方法)
位于com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
原因:java.lang.NoSuchMethodException:action[接口android.view.MenuItem]
位于java.lang.Class.getMethod(Class.java:2068)
位于java.lang.Class.getMethod(Class.java:1690)
在android.support.v7.view.SupportMenuInflater$InflatedOnMenuItemClickListener上。(SupportMenuInflater.java:249)
位于android.support.v7.view.SupportMenuInflater$MenuState.setItem(SupportMenuInflater.java:481)
位于android.support.v7.view.SupportMenuInflater$MenuState.addItem(SupportMenuInflater.java:529)
在android.support.v7.view.SupportMenuInflater.parseMenu(SupportMenuInflater.java:205)中
在android.support.v7.view.SupportMenuInflater.inflate(SupportMenuInflater.java:127)中
位于com.example.kaushalraj.a424.MainActivity.onCreateOptions菜单(MainActivity.java:19)
位于android.app.Activity.onCreatePanelMenu(Activity.java:3388)
位于android.support.v4.app.FragmentActivity.onCreatePanelMenu(FragmentActivity.java:364)
在android.support.v7.view.WindowCallbackWrapper.onCreatePanelMenu(WindowCallbackWrapper.java:93)中
位于android.support.v7.app.AppCompateDelegateImplbase$AppCompateWindowCallBackbase.onCreatePanelMenu(AppCompateDelegateImplbase.java:332)
在android.support.v7.app.AppCompateDelegateImplV9.preparePanel(AppCompateDelegateImplV9.java:1377)
在android.support.v7.app.AppCompateDelegateImplv9.doInvalidatePanelMenu(AppCompateDelegateImplv9.java:1657)中
在android.support.v7.app.appcompatedelegateimplv9$1.run(appcompatedelegateimplv9.java:134)
位于android.os.Handler.handleCallback(Handler.java:790)
位于android.os.Handler.dispatchMessage(Handler.java:99)
位于android.os.Looper.loop(Looper.java:164)
位于android.app.ActivityThread.main(ActivityThread.java:6494)
位于java.lang.reflect.Method.invoke(本机方法)
位于com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

我不知道这是否是你的案例(我也没有评论的名声),但是:你在使用什么应用程序主题?如果您使用的主题顶部没有actionbar,那么当您尝试将菜单附加到主题时,会出现此错误,因为actionbar不存在

您有两种解决方案:

  • 在res/values/styles.xml中检查主题如果使用类似于theme.AppCompat.Light.NoActionBar的内容,则必须将其更改为类似于theme.AppCompat.Light.darkaActionBar的内容。这会将actionbar添加到您的活动中

  • 使用支持工具栏库,将工具栏添加到活动xml布局中,然后从活动类的OnCreate()中获取视图,并使用
    setSupportActionBar(myToolbar)
    。这会将您的工具栏视图设置为菜单将附加到的操作栏


  • 这是你粘贴的完整日志吗?如果没有,请粘贴完整的日志。您还说您的菜单文件名是
    menu
    。还是在第19行“充气机.充气(R.menu.menu,menu1);”真的有逗号吗?如果菜单名为menu1,则应该是dot(.)@ravi no,它不是完整的日志替换充气器。充气器充气(R.menu.menu,menu1)。充气(R.menu.menu1,menu)和oncreateoptions菜单(menu menu1)带有oncreateoptions菜单(menu menu菜单)。KaushalRaj请进行更改并粘贴完整的日志。不,我添加了工具栏。