添加子菜单时Android应用程序崩溃

时间:2015-07-30 17:53:04

标签: android menu crash

当我尝试将子菜单添加到我的应用程序时,它会崩溃。当我删除子菜单时,它工作正常。

menu_main.xml

<menu
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity">

 <item
     android:id="@+id/action_settings"
     android:icon="@drawable/ic_action_setting"
     android:title="@string/action_settings"
     android:orderInCategory="1"
     app:showAsAction="ifRoom"
     tools:ignore="AppCompatResource" />

<item
    android:id="@+id/action_language"
    android:icon="@mipmap/ic_launcher"
    android:title="@string/langauge"
    android:orderInCategory="2"
    app:showAsAction="ifRoom"
    tools:ignore="AppCompatResource" />

<item
    android:id="@+id/action_language2"
    android:icon="@drawable/ic_action_drawing"
    android:title="language2"
    android:orderInCategory="3"
    app:showAsAction="ifRoom"
    tools:ignore="AppCompatResource" />

<menu>
    <item
        android:id="@+id/action1"
        android:title="item one">
    </item>
    <item
        android:id="@+id/action2"
        android:title="item two">
    </item>
</menu>

</menu>

当我删除上面的子菜单(项目“第一项”和项目“第二项”)时,应用运行正常。 这是与消息崩溃的logcat输出      java.lang.RuntimeException:文档的意外结束 它有什么期望?我不能在菜单的最后一项有子菜单吗? 请注意,如果我将子菜单移动到主菜单的第二项,则应用程序不会崩溃。

logcat的

07-30 05:09:02.890  16982-16982/? I/art﹕ Not late-enabling -Xcheck:jni (already on)
07-30 05:09:03.000  16982-16997/? D/OpenGLRenderer﹕ Use EGL_SWAP_BEHAVIOR_PRESERVED: true
07-30 05:09:03.060  16982-16982/? D/Atlas﹕ Validating map...
07-30 05:09:03.140  16982-16997/? D/﹕ HostConnection::get() New Host Connection established 0x7f023fd1bf40, tid 16997
07-30 05:09:03.160  16982-16997/? I/OpenGLRenderer﹕ Initialized EGL, version 1.4
07-30 05:09:03.200  16982-16997/? D/OpenGLRenderer﹕ Enabling debug mode 0
07-30 05:09:03.220  16982-16997/? W/EGL_emulation﹕ eglSurfaceAttrib not implemented
07-30 05:09:03.220  16982-16997/? W/OpenGLRenderer﹕ Failed to set EGL_SWAP_BEHAVIOR on surface 0x7f023ffd4fc0, error=EGL_SUCCESS
07-30 05:09:03.270  16982-16982/? D/AndroidRuntime﹕ Shutting down VM
--------- beginning of crash
07-30 05:09:03.270  16982-16982/? E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: il.co.talkie.q, PID: 16982
java.lang.RuntimeException: Unexpected end of document
        at android.support.v7.internal.view.SupportMenuInflater.parseMenu(SupportMenuInflater.java:205)
        at android.support.v7.internal.view.SupportMenuInflater.inflate(SupportMenuInflater.java:118)
        at il.co.talkie.q.MainActivity.onCreateOptionsMenu(MainActivity.java:61)
        at android.app.Activity.onCreatePanelMenu(Activity.java:2823)
        at android.support.v4.app.FragmentActivity.onCreatePanelMenu(FragmentActivity.java:277)
        at android.support.v7.internal.view.WindowCallbackWrapper.onCreatePanelMenu(WindowCallbackWrapper.java:84)
        at android.support.v7.app.AppCompatDelegateImplBase$AppCompatWindowCallbackBase.onCreatePanelMenu(AppCompatDelegateImplBase.java:275)
        at android.support.v7.app.AppCompatDelegateImplV7.preparePanel(AppCompatDelegateImplV7.java:1117)
        at android.support.v7.app.AppCompatDelegateImplV7.doInvalidatePanelMenu(AppCompatDelegateImplV7.java:1399)
        at android.support.v7.app.AppCompatDelegateImplV7.access$100(AppCompatDelegateImplV7.java:89)
        at android.support.v7.app.AppCompatDelegateImplV7$1.run(AppCompatDelegateImplV7.java:126)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5257)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

1 个答案:

答案 0 :(得分:2)

您必须将子菜单放在所需项目内,然后在子菜单后关闭该项目。

这应该是这样的

<item
    android:id="@+id/action_language2"
    android:icon="@drawable/ic_action_drawing"
    android:title="language2"
    android:orderInCategory="3"
    app:showAsAction="ifRoom"
    tools:ignore="AppCompatResource" >

    <menu>
        <item
            android:id="@+id/action1"
            android:title="item one">
        </item>
        <item
            android:id="@+id/action2"
            android:title="item two">
        </item>
    </menu>

</item>