javaandroidandroid-intentandroid-studioshareactionprovider

ActionProvider cannot be converted to ShareActionProvider


import android.widget.ShareActionProvider;
...
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.detailfragment, menu);
    MenuItem menuItem = menu.findItem(R.id.action_share);
    ShareActionProvider mShareActionProvider = (ShareActionProvider)MenuItemCompat.getActionProvider(menuItem);

    if (mShareActionProvider != null) {
        mShareActionProvider.setShareIntent(createShareForecastIntent());
    } else {
        Log.d(LOG_TAG, "Share Action Provider is null?");
    }
}

This code shows the following error:

incompatible types: ActionProvider cannot be converted to ShareActionProvider

The following is the detailfragment.xml file:

<?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/action_share"
        android:title="@string/action_share"
        app:showAsAction="always"
        app:actionProviderClass="android.support.v7.widget.ShareActionProvider" />
</menu>

Please help.


Solution

  • android.widget.ShareActionProvider and android.support.v7.widget.ShareActionProvider are not the same class. Change your import to match your actionProviderClass.