How to get my ShareActionProvider file for sending text Dynamically (from listeners) viewing pagers, etc.

I use the Sherlock Library action bar, which is similar to the ICS action bar, the place I got stuck is

@Override public boolean onCreateOptionsMenu(Menu menu) { menu.add("Save") .setIcon(R.drawable.ic_compose).setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); menu.add("Search") .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT); SubMenu sub = menu.addSubMenu("Options"); sub.add(0, SubMenu.NONE, 0, "First"); sub.add(0,SubMenu.NONE, 1, "Second"); sub.add(0, SubMenu.NONE, 2, "Three"); sub.getItem().setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT); // HERE IS WHere I AM FACING PROBLEM IN getSupportMenuInflater().inflate(R.menu.share_action_provider, menu); // Set file with share history to the provider and set the share intent. actionItem = menu.findItem(R.id.menu_item_share_action_provider_action_bar); ShareActionProvider actionProvider = (ShareActionProvider) actionItem.getActionProvider(); actionProvider.setShareHistoryFileName(ShareActionProvider.DEFAULT_SHARE_HISTORY_FILE_NAME); //this is BRILLIANT WAY TO AVOID REPEATation actionProvider.setShareIntent(createShareIntent()); return super.onCreateOptionsMenu(menu); } private Intent createShareIntent() { Intent shareIntent = new Intent(Intent.ACTION_SEND); shareIntent.setType("text/plain"); //THIS TEXT IS WHAT I WANT TO OBTAIN DYNAMICALLY shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Something goes here"); return shareIntent; } 

Whenever I try to put actionProvider.setShareIntent(createShareIntent()); inside the listener or somewhere other than actionProvider.setShareIntent(createShareIntent()); I get D/View(11753): onTouchEvent: viewFlags is DISABLED

I want to enable this share action provider and want to enter my own text that is generated on the user's inputs.

Any inputs are welcome.

Adding this does not work

  actionItem.setOnMenuItemClickListener(new OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { Log.e("THIS IS NEVER CALLED", "??"); return true; } }); 

How to get the update for the Share button pressed

+6
source share
2 answers

I ran into a similar issue with the android.support.v7.app.ActionBarActivity derivative (although I think this approach should work for any activity), and I overloaded onPrepareOptionsMenu and got the effect you got after it:

 @Override public boolean onPrepareOptionsMenu(Menu menu) { ShareActionProvider actionProvider = (ShareActionProvider) actionItem.getActionProvider(); if (actionProvider != null) { actionProvider.setShareIntent(createShareIntent()); } return super.onPrepareOptionsMenu(menu); } 
0
source

I use the following menu:

 public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.your_share_button_name: share(); return true; } } private void share() { Intent sharingIntent = new Intent(Intent.ACTION_SEND); sharingIntent.setType("text/plain"); sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, "your text"); sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "your subject"); startActivity(Intent.createChooser(sharingIntent, "Share using")); } 

what all. I suggest you place the entire menu layout in xml in the res / menu folder.

-1
source

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


All Articles