Below is the code for my Activity
import android.app.Activity; import android.os.Bundle; import android.support.v7.widget.ShareActionProvider; import android.view.Menu; import android.view.MenuItem; public class MainActivity extends Activity { private ShareActionProvider shareAction; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.activity_main, menu); MenuItem item = menu.getItem(R.id.menu_settings); shareAction = (ShareActionProvider) item.getActionProvider(); return true; } }
The Problem is that there is a cast error from ActionProvider to ShareActionProvider.Why it is so below is activity_menu.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/menu_settings" android:orderInCategory="100" android:showAsAction="always" android:title="@string/menu_settings" android:actionProviderClass="android.widget.ShareActionProvider" /> </menu>
I had the same problem and I have found the solution:
1) You have to use:
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:bwq="http://schemas.android.com/apk/res-auto" > <item android:id="@+id/menu_share" android:title="@string/menu_share" bwq:actionProviderClass="android.support.v7.widget.ShareActionProvider" bwq:showAsAction="always"/> </menu>
2) and in Java
import android.support.v7.widget.ShareActionProvider;
and
// Locate MenuItem with ShareActionProvider MenuItem item = menu.findItem(R.id.menu_share); // Fetch and store ShareActionProvider mShareActionProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(item);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With