2014-11-02 85 views
1

我在我的Activity中有一個ListView。長按列表視圖,我打開了上下文操作欄。它有一個共享選項,可以通過gmail/whatsapp /等共享列表中選定的項目(可以選擇多個項目)。如何在上下文操作欄中使用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(); 

我的列表視圖由文件名組成。 我的要求是,如果用戶在列表視圖中選擇多個項目(第一次長按,然後正常按連續選擇),我應該能夠共享所有這些文件。

我正在使用下面的這種意圖(對應於列表視圖中的文件名的所有文件都是audio-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)中調用它,共享意圖似乎沒有更新。請幫助..

回答

0

我不能把它在onCreateActionMode(ActionMode模式,菜單菜單),因爲,用戶可以在第一長按後,在列表中選擇一些更多的項目。

嘗試onItemCheckedStateChanged()再次稱它有,也稱之爲,當檢查項目的變化組合,提供了一個新的Intent有更新的附加功能。

+0

不使用MultichoiceModeListener和它的OnItemCheckedStateChanged()是不可能實現這個ShareActionProvider?因爲,我已經通過使用ActionMode.CallBack而不是任何MultiChoiceModeListener來實現'刪除'多個項目。 – 2014-11-03 16:39:35

+0

謝謝,我能夠通過使用MultichoiceModeListener爲listview創建新的Intent,並在onItemCheckedStateChanged()和將其設置爲ShareActionProvider對象的ShareIntent。 – 2014-11-03 17:39:47

相關問題