Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Unable to cast Action Provider to Share Action Provider

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> 
like image 543
Anuranjit Maindola Avatar asked Oct 01 '13 13:10

Anuranjit Maindola


1 Answers

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); 
like image 56
Susana Mar Flores Avatar answered Oct 02 '22 14:10

Susana Mar Flores