Unexpected end of document (at android.view.MenuInflater.parseMenu)

The code fails in this line when the app is launched (public boolean onCreateOptionsMenu(Menu menu)) as given by the logcat. Can anyone please point out Why so ???

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.official, menu);
    official_menu = menu.findItem(R.id.ac_official);
    important_menu = menu.findItem(R.id.ac_important);
    normal_menu = menu.findItem(R.id.ac_normal);
    create_menu = menu.findItem(R.id.ac_create);
    if(dp.getDesignation().equalsIgnoreCase("student")){
        create_menu.setVisible(false);
    }
    profile_menu = menu.findItem(R.id.ac_profile);
    return true;
}

LOGCAT

01-20 06:59:19.684: E/AndroidRuntime(996): FATAL EXCEPTION: main
01-20 06:59:19.684: E/AndroidRuntime(996): java.lang.RuntimeException: Unexpected end of document
01-20 06:59:19.684: E/AndroidRuntime(996):  at android.view.MenuInflater.parseMenu(MenuInflater.java:197)
01-20 06:59:19.684: E/AndroidRuntime(996):  at android.view.MenuInflater.inflate(MenuInflater.java:110)
01-20 06:59:19.684: E/AndroidRuntime(996):  at com.notice.official.OfficialActivity.onCreateOptionsMenu(OfficialActivity.java:183)
01-20 06:59:19.684: E/AndroidRuntime(996):  at android.app.Activity.onCreatePanelMenu(Activity.java:2504)
01-20 06:59:19.684: E/AndroidRuntime(996):  at com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:413)
01-20 06:59:19.684: E/AndroidRuntime(996):  at com.android.internal.policy.impl.PhoneWindow.doInvalidatePanelMenu(PhoneWindow.java:775)
01-20 06:59:19.684: E/AndroidRuntime(996):  at com.android.internal.policy.impl.PhoneWindow$1.run(PhoneWindow.java:198)
01-20 06:59:19.684: E/AndroidRuntime(996):  at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
01-20 06:59:19.684: E/AndroidRuntime(996):  at android.view.Choreographer.doCallbacks(Choreographer.java:562)
01-20 06:59:19.684: E/AndroidRuntime(996):  at android.view.Choreographer.doFrame(Choreographer.java:531)
01-20 06:59:19.684: E/AndroidRuntime(996):  at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
01-20 06:59:19.684: E/AndroidRuntime(996):  at android.os.Handler.handleCallback(Handler.java:730)
01-20 06:59:19.684: E/AndroidRuntime(996):  at android.os.Handler.dispatchMessage(Handler.java:92)
01-20 06:59:19.684: E/AndroidRuntime(996):  at android.os.Looper.loop(Looper.java:137)
01-20 06:59:19.684: E/AndroidRuntime(996):  at android.app.ActivityThread.main(ActivityThread.java:5103)
01-20 06:59:19.684: E/AndroidRuntime(996):  at java.lang.reflect.Method.invokeNative(Native Method)
01-20 06:59:19.684: E/AndroidRuntime(996):  at java.lang.reflect.Method.invoke(Method.java:525)
01-20 06:59:19.684: E/AndroidRuntime(996):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
01-20 06:59:19.684: E/AndroidRuntime(996):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
01-20 06:59:19.684: E/AndroidRuntime(996):  at dalvik.system.NativeStart.main(Native Method)

I had the same problem and was in XML, was putting a sub menu outside a <item> already closed /> Example:

<item
    android:id="@+id/menu_map"
    android:title="Map" />

<item
    android:id="@+id/menu_options"
    android:title="Options" />

    <menu>
        <item
            android:id="@+id/menu_sync"
            android:title="Sync" />
    </menu>

Just remember to close the <item> after the sub menu. Simple, but sometimes happens.


Unexpected end of document exception while inflating the menu implies that your menu (R.menu.official) does not have proper tags. You can check your xml from this website: http://www.xmlvalidation.com/

A sample menu file:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

<item
    android:id="@+id/reset_count_menu"
    android:orderInCategory="101"
    android:showAsAction="never|collapseActionView"
    android:title="@string/reset_count"/>
<item
    android:id="@+id/count_type_menu"
    android:orderInCategory="102"
    android:showAsAction="never|collapseActionView"
    android:title="@string/count_forward_backward"/>
<item
    android:id="@+id/set_initial_count_menu"
    android:orderInCategory="103"
    android:showAsAction="never|collapseActionView"
    android:title="@string/set_initial_count"/>
<item
    android:id="@+id/set_counter_name_menu"
    android:orderInCategory="103"
    android:showAsAction="never|collapseActionView"
    android:title="@string/set_counter_name"/>

</menu>
链接地址: http://www.djcxy.com/p/18732.html

上一篇: 如何更新印度铁路网站添加的PNR Capcha

下一篇: 意外的文档结束(在android.view.MenuInflater.parseMenu)