Ich habe ein Freigabesymbol mit der ShareActionProvider
erstellt. In der MainActivity
Klasse habe ich folgendes:Aktualisieren Sie den Inhalt der Freigabe Absicht in Android
public class MainActivity extends AppCompatActivity{
....
private ShareActionProvider mShareActionProvider;
...
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main, menu);
// Locate MenuItem with ShareActionProvider
MenuItem item = menu.findItem(R.id.action_share);
// Fetch and store ShareActionProvider
mShareActionProvider =
(ShareActionProvider) MenuItemCompat.getActionProvider(item);
// call the intent
setShareIntent();
return true;
}
private void setShareIntent() {
Intent myShareIntent = new Intent();
myShareIntent.setAction(Intent.ACTION_SEND);
myShareIntent.setType("text/plain");
// get the content of the text view
myShareIntent.putExtra(Intent.EXTRA_TEXT, myTextView.getText());
mShareActionProvider.setShareIntent(myShareIntent);
}
Das Problem ist, dass der Inhalt der myTextView
ändert und wenn der Benutzer die Freigabe-Symbol klickt, wird der Standardtext geteilt.
Ich denke, das liegt daran, dass wir die Absicht in der onCreateOptionsMenu
aufrufen. Wie kann ich die Absicht aktualisieren, damit der aktuelle Inhalt in gespeichert wird?
Entschuldigung das ist sehr verwirrend, also erstellen Sie die Absicht in der 'OnCreate'? –
@RainMan: Ich erstelle eigentlich die 'Absicht' in einem Feldinitialisierer, da es nicht von einem' Kontext' oder irgendetwas abhängt. Ich konnte bei jedem 'afterTextChanged()' Aufruf ein brandneues 'Intent'-Objekt erstellen, aber das schien verschwenderisch. – CommonsWare