1

我的活动中有一个 ListView。长按该列表视图,我打开了上下文操作栏。它有一个共享选项,可以通过 gmail/whatsapp/etc 共享列表中的选定项目(可以选择多个项目)。

<item android:id="@+id/menu_share" android:title="Share" android:icon="@android:drawable/ic_menu_share" android:actionProviderClass="android.widget.ShareActionProvider" app:showAsAction="ifRoom" />

这是我在菜单布局文件中的共享选项。

我有一个实现 ActionMode.Callback 的类来处理上下文操作栏及其图标。

onCreateActionMode(ActionMode mode, Menu menu)我在 Share 菜单项的覆盖内初始化了一个 ShareActionProvider 对象。

mShareActionProvider = (ShareActionProvider) menuItem.getActionProvider();

我的列表视图由文件名组成。我的要求是,如果用户在列表视图中选择多个项目(首先长按,然后正常按连续选择),我应该能够共享所有这些文件。

我正在使用以下内容来实现这样的意图(与列表视图中的文件名对应的所有文件都是音频 - amr 文件)。

Intent shareIntent = new Intent(Intent.ACTION_SEND_MULTIPLE);
shareIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM,uriList);
shareIntent.setType("audio/AMR");

这里,uriList 是 Uris 的 ArrayList。现在我应该在哪里调用该方法mShareActionProvider.setShareIntent(intent);

我不能调用它,onCreateActionMode(ActionMode mode, Menu menu)因为用户可能会在第一次长按后在列表中选择更多项目。

如果我直接在 中调用它onActionItemClicked(ActionMode mode, MenuItem item),我的共享图标似乎是不活动的。

如果我同时调用它onCreateActionMode(ActionMode mode, Menu menu)onActionItemClicked(ActionMode mode, MenuItem item)使用相同的意图,则共享意图似乎没有更新。请帮助..

4

1 回答 1

0

我不能在 onCreateActionMode(ActionMode mode, Menu menu) 中调用它,因为在第一次长按后,用户可能会在列表中选择更多项目。

尝试在那里调用它,但也可以在 中再次onItemCheckedStateChanged()调用它,当检查项目的组合发生变化时,提供一个Intent具有更新附加功能的新项目。

于 2014-11-02T19:40:30.623 回答