2014-11-02 4 views
1

내 활동에 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을 구현 한 클래스를 사용하여 상황에 맞는 작업 표시 줄과 해당 아이콘을 처리 할 수 ​​있습니다.

공유 메뉴 항목의 재정의 된 onCreateActionMode(ActionMode mode, Menu menu) 안에 ShareActionProvider 개체를 초기화했습니다.

mShareActionProvider = (ShareActionProvider) menuItem.getActionProvider(); 

내 목록보기는 파일 이름으로 구성됩니다. 내 요구 사항은 사용자가 목록보기에서 여러 항목을 선택한 경우 (연속해서 선택하려면 길게 누른 다음 보통 누르기) 모든 파일을 공유 할 수 있어야한다는 것입니다.

나는 이러한 의도에 대해 아래를 사용하고 있습니다 (listview의 파일 이름에 해당하는 모든 파일은 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 모드, 메뉴 메뉴)에서 호출 할 수 없습니다. 선택한 항목 변경의 혼합, 업데이트 된 엑스트라를 가진 새 Intent를 제공 할 때

시도, onItemCheckedStateChanged() 다시거기를 호출뿐만 아니라, 호출.

+0

MultichoiceModeListener 및 해당 OnItemCheckedStateChanged()를 사용하지 않고이 ShareActionProvider를 구현할 수 있습니까? 왜냐하면, 나는 ActionMode.CallBack 만 사용하고 MultiChoiceModeListener를 사용하지 않고 여러 항목을 '삭제'했습니다. –

+0

감사합니다. listview에 MultichoiceModeListener를 사용하고 onItemCheckedStateChanged()에 새 Intent를 작성하여 원하는 항목을 얻을 수있었습니다. ShareActionProvider 객체의 ShareIntent로 설정합니다. –