ローカルデータベースからのテキストで最初に入力されるEditTextがあります。ユーザーが画面を離れると(onPause)、更新されたテキストはローカルデータベースに保存されます。ShareActionProviderもあります(ActionBarSherlockを使用)。
ユーザーがShareActionProviderを使用すると、古いテキストがターゲットアプリケーションに送信されます。ユーザーがメニュー項目を押したときに、アクションプロバイダーを介して送信されるテキストを更新するにはどうすればよいですか?
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.share_action_provider, menu);
MenuItem actionItem = menu.findItem(R.id.menu_item_share_action_provider_action_bar);
mActionProvider = (ShareActionProvider) actionItem.getActionProvider();
mActionProvider.setShareIntent(createShareIntent());
}
private Intent createShareIntent() {
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setType("text/plain");
shareIntent.putExtra(Intent.EXTRA_TEXT, editText.getText().toString());
return shareIntent;
}
ユーザーがmenu-itemを押したときに、onOptionsItemSelected()が呼び出されていないようです。だから私は運がなくて次のonPause()を試しました:
@Override
public void onPause() {
super.onPause();
mActionProvider.setShareIntent(createShareIntent());
// save to db:
getActivity().saveText(editText.getText().toString());
}
ところで:このコードはすべてフラグメントに含まれています。