android - ShareActionProvider 刷新文本

标签 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;
}

当用户按下菜单项时,似乎不会调用 onOptionsItemSelected()。 所以我尝试了以下 onPause(),但没有成功:

@Override
public void onPause() {
    super.onPause();
    mActionProvider.setShareIntent(createShareIntent());
    // save to db:
    getActivity().saveText(editText.getText().toString());
}

顺便说一句:这段代码都在一个 fragment 中。

最佳答案

也许有点矫枉过正,但我​​通过在每次更改 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) {
        }});

关于android - ShareActionProvider 刷新文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12923492/

相关文章:

java - 拦截方法调用

java - window.clearFlags(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR) 无法从 fragment 内部工作

android - ActionBarSherlock - 我可以将 ActionBarSherlock 库项目放在我的应用程序库目录中并将该库项目附加到我的应用程序吗?

android - ActionBarSherlock Item Icon 奇怪的宽度与 Android 4.3

android - 无法从 SQLiteCursorLoader 转换为 Loader<Cursor>

android - 导出 Android SQLite 数据库

java - 导入android.os无法解析

android - 使用 ABI 拆分启用 externalNativeBuild

java - 如何将 bundle 数据从一个 fragment 获取到另一个 fragment ?

android - 如何在不更改 MainActivity 标题的情况下更改 fragment 的标题?