Arn*_*nde 10 android android-fragments actionbarsherlock shareactionprovider
我有一个EditText,它最初填充了本地数据库中的文本.当用户离开屏幕(onPause)时,更新的文本存储在本地数据库中.我还有一个ShareActionProvider(使用ActionBarSherlock).
当用户使用ShareActionProvider时,旧文本将发送到目标应用程序.当用户按下菜单项时,如何刷新通过actionprovider发送的文本?
@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;
}
Run Code Online (Sandbox Code Playgroud)
当用户按下菜单项时,似乎没有调用onOptionsItemSelected().所以我尝试了以下onPause(),没有运气:
@Override
public void onPause() {
super.onPause();
mActionProvider.setShareIntent(createShareIntent());
// save to db:
getActivity().saveText(editText.getText().toString());
}
Run Code Online (Sandbox Code Playgroud)
顺便说一句:这段代码都在片段中.
也许有点矫枉过正,但每次EditText字段改变时,我都会通过设置共享Intent来实现它.我添加了一个TextWatcher监听器:
editText.addTextChangedListener(new TextWatcher(){
@Override
public void afterTextChanged(Editable s) {
if(mActionProvider!=null) {
mActionProvider.setShareIntent(createShareIntent());
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2066 次 |
| 最近记录: |