android中的异常NoSuchFieldError

时间:2018-03-22 06:06:17

标签: android

这次崩溃在LGE android 4中多次发生。

可以解决什么问题?

错误日志为:

Fatal Exception: java.lang.NoSuchFieldError: android.content.res.Configuration.keyboard
   at android.support.v7.view.menu.MenuBuilder.setShortcutsVisibleInner(MenuBuilder.java:802)
   at android.support.v7.view.menu.MenuBuilder.<init>(MenuBuilder.java:234)
   at android.support.v7.app.AppCompatDelegateImplV9.initializePanelMenu(AppCompatDelegateImplV9.java:1279)
   at android.support.v7.app.AppCompatDelegateImplV9.preparePanel(AppCompatDelegateImplV9.java:1343)
   at android.support.v7.app.AppCompatDelegateImplV9.doInvalidatePanelMenu(AppCompatDelegateImplV9.java:1638)
   at android.support.v7.app.AppCompatDelegateImplV9$1.run(AppCompatDelegateImplV9.java:134)
   at android.os.Handler.handleCallback(Handler.java:615)
   at android.os.Handler.dispatchMessage(Handler.java:92)
   at android.os.Looper.loop(Looper.java:153)
   at android.app.ActivityThread.main(ActivityThread.java:5076)
   at java.lang.reflect.Method.invokeNative(Method.java)
   at java.lang.reflect.Method.invoke(Method.java:511)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
   at dalvik.system.NativeStart.main(NativeStart.java)

我在整个应用程序中只使用了一个菜单。 menu_web_page.xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
    android:id="@+id/action_refresh"
    android:icon="@drawable/ic_refresh_white_24dp"
    android:title="@string/action_refresh"
    app:showAsAction="always" />

<item
    android:id="@+id/action_share"
    android:icon="@drawable/ic_share_white_24dp"
    android:title="@string/action_share"
    app:showAsAction="always" />

活动中的Java代码:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_web_page, menu);
    return true;
}

我更新了菜单项可见性:

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    if (menu.findItem(R.id.action_refresh) != null) {
        menu.findItem(R.id.action_refresh).setVisible(getIntent().getBooleanExtra(EXTRA_ENABLE_REFRESH, true));
    }
    if (menu.findItem(R.id.action_share) != null) {
        menu.findItem(R.id.action_share).setVisible(getIntent().getBooleanExtra(EXTRA_ENABLE_SHARE, true));
    }
    return super.onPrepareOptionsMenu(menu);
}

我处理了菜单项选择事件:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();
    if (id == android.R.id.home) {
        onBackPressed();
        return true;
    } else if (id == R.id.action_refresh) {
        onRefreshClicked();
        return true;
    } else if (id == R.id.action_share) {
        onShareClicked();
        return true;
    }
    return super.onOptionsItemSelected(item);
}

我不明白究竟是什么问题?有人可以帮忙吗?

0 个答案:

没有答案