How to implement share action in android?

I want to implement an action with share in my project, but when I used MenuItem , instead of a Runtime error, it used MenuItemCompat , but it also gave an error.

Here is my code:

 @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_third_, menu); MenuItem menuItem = menu.findItem(R.id.menu_item_share); mShareActionProvider = (ShareActionProvider) menuItem.getActionProvider(); mShareActionProvider.setShareIntent(getDefaultShareIntent()); return true; } public Intent getDefaultShareIntent (){ Intent shareIntent = new Intent(Intent.ACTION_SEND); shareIntent.setType("text/plain"); shareIntent.putExtra(Intent.EXTRA_SUBJECT, "SUBJECT"); shareIntent.putExtra(Intent.EXTRA_TEXT,"Extra Text"); return shareIntent; } 
+5
source share
1 answer

I believe that you have subclassed AppCompatActivity for your activity, due to which you get this error. Please use the following code

Initialize ShareActionProvider in your activity

 import android.support.v7.widget.ShareActionProvider; import android.support.v4.view.MenuItemCompat; private ShareActionProvider mShareActionProvider; @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); // Locate MenuItem with ShareActionProvider MenuItem item = menu.findItem(R.id.action_share); // Fetch and store ShareActionProvider mShareActionProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(item); mShareActionProvider.setShareHistoryFileName(ShareActionProvider.DEFAULT_SHARE_HISTORY_FILE_NAME); // Set share Intent. // Note: You can set the share Intent afterwords if you don't want to set it right now. mShareActionProvider.setShareIntent(createShareIntent()); // Return true to display menu return true; } // Create and return the Share Intent private Intent createShareIntent() { Intent shareIntent = new Intent(Intent.ACTION_SEND); shareIntent.setType("text/plain"); shareIntent.putExtra(Intent.EXTRA_TEXT, "http://play.google.com/store/apps/details?id=pk.nimgade.Bostan.Train.Schedule"); Intent intent = Intent.createChooser(shareIntent,"Share"); return shareIntent; } 

and so your xml representation will look

  <item android:id="@+id/action_share" app:actionProviderClass="android.support.v7.widget.ShareActionProvider" app:showAsAction="always" android:title="Share" /> 

Please make sure your SDK updated. In this strange case, I came across this. This is unpleasant when you do not know what is missing.

+1
source

Source: https://habr.com/ru/post/1235464/


All Articles