Exception: This is not supported, use MenuItemCompat.getActionProvider()

一、异常

在做《Adding an Easy Share Action》时,AS 出现了如下 Bug:

Exception: This is not supported, use MenuItemCompat.getActionProvider()

Google 了一下,虽然也有人遇到的了问题,但是大家给出的解决方案却是五花八门,经过分析,最终找到了原因。

二、原因

经分析才知道原来是菜单配置文件中引用的 ShareActionProvider 和 Android 支持库中定义的 ShareActionProvider 不一致不一致造成的。

我的 Android 支持库是 com.android.support:appcompat-v7:25.1.0,而我定义的菜单文件却是:

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
            android:id="@+id/menu_item_share"
            android:showAsAction="ifRoom"
            android:title="Share"
            android:actionProviderClass=
                "android.widget.ShareActionProvider" />
    ...
</menu>

三、解决方案

解决方案很简单:将二者改为一致

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/item_share_intent"
        android:title="Share"
        app:actionProviderClass="android.support.v7.widget.ShareActionProvider"
        app:showAsAction="ifRoom" />
</menu>

猜你喜欢

转载自blog.csdn.net/zjh_1110120/article/details/54563964