2014-11-02 2 views
1

У меня есть ListView в моей деятельности. При длинном нажатии этого списка, у меня открыта контекстная панель действий. Он имеет опцию Share для совместного использования выбранных элементов в списке (можно выбрать несколько элементов) через gmail/whatsapp/etc.Как делиться несколькими файлами с помощью ShareActionProvider в контекстной панели действий?

<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 для обработки контекстной панели действий и ее значков.

Я инициализировал объект ShareActionProvider внутри переопределения onCreateActionMode(ActionMode mode, Menu menu) для пункта меню «Общий доступ».

mShareActionProvider = (ShareActionProvider) menuItem.getActionProvider(); 

Мой просмотр списка состоит из имен файлов. Мое требование состоит в том, что, если пользователь выбирает несколько элементов в представлении списка (сначала нажмите и затем нормальное нажатие для последующего выбора), я должен иметь возможность обмениваться всеми этими файлами.

Я использую нижеследующее для такого намерения (все файлы, соответствующие именам файлов в списке, являются файлами аудио-amr).

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

Здесь uriList является ArrayList of Uris. Теперь, где я должен назвать метод mShareActionProvider.setShareIntent(intent);?

Я не могу назвать это в onCreateActionMode(ActionMode mode, Menu menu), потому что пользователь может выбрать еще несколько элементов в списке после первого длительного нажатия.

Если я вызываю его непосредственно в onActionItemClicked(ActionMode mode, MenuItem item), значок «Мой Share» кажется неактивным.

Если я назову его как в onCreateActionMode(ActionMode mode, Menu menu), так и в onActionItemClicked(ActionMode mode, MenuItem item) с использованием того же намерения, намерение долевого участия, похоже, не обновляется. Просьба помочь ..

ответ

0

Я не могу назвать его в onCreateActionMode (режим ActionMode, меню меню), потому что пользователь может выбрать еще несколько элементов в списке после первого длительного нажатия.

Try назвав его там, но и назвать его снова в onItemCheckedStateChanged(), когда смесь проверяемых элементов изменится, обеспечивая новый Intent, который имеет обновленные статистов.

+0

Невозможно ли достичь этого ShareActionProvider без использования MultichoiceModeListener и его OnItemCheckedStateChanged()? Потому что я достиг нескольких элементов «Удалить», используя только ActionMode.CallBack, а не MultiChoiceModeListener. –

+0

Спасибо, я смог получить то, что я хотел, используя MultichoiceModeListener для списка и создав новый Intent в onItemCheckedStateChanged() и установив это как ShareIntent объекта ShareActionProvider. –

Смежные вопросы