ShareActionProvider
を使用して共有アイコンを作成しました。 MainActivity
クラスでは、私は以下のものを持っている: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);
}
問題は、ユーザーが共有アイコンをクリックしたときにmyTextView
変更の内容とは、デフォルトのテキストが共有されていることです。
これは、onCreateOptionsMenu
のインテントを呼び出しているためです。現在のコンテンツがmyTextView
に保存されるようにインテントを更新するにはどうすればよいですか?
申し訳ありませんが、これは非常に混乱しているので、 'onCreate'にインテントを作成しますか? –
@RainMan:フィールド初期化子に 'Content'や何かに依存しないので、実際に' Intent'を作成します。 'afterTextChanged()'の呼び出しごとにまったく新しい 'Intent'オブジェクトを作成できましたが、それは無駄に思えました。 – CommonsWare