Follow a Simple rule that I found useful
With AppCompatActivity
use this,
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:support="http://schemas.android.com/apk/res-auto">
<!--
To use ShareActionProvider, we reference the class by set the
support:actionProviderClass attribute with the full class name of ShareActionProvider.
-->
<item
android:id="@+id/menu_share"
android:title="@string/menu_share"
support:actionProviderClass="android.support.v7.widget.ShareActionProvider"
support:showAsAction="always" />
</menu>
You can also replace support:actionProviderClass with app:actionProviderClass and support:showAsAction with app:showAsAction
In your onCreateOptionsMenu()
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu resource
getMenuInflater().inflate(R.menu.main_menu, menu);
// Retrieve the share menu item
MenuItem shareItem = menu.findItem(R.id.menu_share);
// Now get the ShareActionProvider from the item
mShareActionProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(shareItem);
//set its ShareIntent.
setShareIntent(shareIntent);
return super.onCreateOptionsMenu(menu);
}
With Activity
use this,
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/share"
android:actionProviderClass="android.widget.ShareActionProvider"
android:showAsAction="ifRoom"
tools:ignore="MenuTitle" />
</menu>
In your onCreateOptionsMenu()
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.actions, menu);
ShareActionProvider share=
(ShareActionProvider)menu.findItem(R.id.share)
.getActionProvider();
share.setShareIntent(shareIntent);
return(super.onCreateOptionsMenu(menu));
}