몇 시간 동안 조사를하고 해결책을 찾으려고했는데 여기에 내 문제를 적어두기로 결심했습니다. 그것. 내가 만들공유 방향 목록에서 사용할 수있는 인 텐트 목록 메뉴가 변경됨 (shareActionProvider)
<item android:id="@+id/menu_share"
android:actionProviderClass="android.widget.ShareActionProvider"
android:title="Share"/>
방법 onOptionsItemSelected
에서와 공유 의도 설정 : 나는 메뉴와 응용 프로그램이하는 공유 옵션되는 옵션 중 하나는 메뉴 XML 파일에 다음과 같이 선언
private ShareActionProvider shareActionProvider;
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_share:
MenuItem actionItem = optionsMenu.findItem(R.id.menu_share);
shareActionProvider = (ShareActionProvider) actionItem.getActionProvider();
shareActionProvider.setShareIntent(createShareIntent());
return true;
default:
return super.onOptionsItemSelected(item);
}
}
을
공유 메뉴 옵션을 누르면 공유 할 앱이있는 목록이 표시됩니다. 내가 원하는 것은 장치가 보이도록 표시기를 돌릴 때 대신 사라지는 것입니다. 내가 활동을 재현하는 것을 막기 위해 android:configChanges
을 사용할 수 없다는 것을 언급합니다.
프로그래밍 방식으로 공유 앱 목록을 열려면 어떻게해야할까요?
a). 아래 메서드를 호출하면 시각적으로 아무 것도 발생하지 않습니다. 단지 업데이 트 ShareActionProvider
public void showShareItemList() {
MenuItem actionItem = optionsMenu.findItem(R.id.menu_share);
shareActionProvider = (ShareActionProvider) actionItem.getActionProvider();
shareActionProvider.setShareIntent(createShareIntent());
}
b). 아래 메소드를 호출하면 위의 그림과 같은 메뉴 옵션 목록이 아닌 새로운 활동이 열립니다.
이public void showShareItemList2(){
Intent sharingIntent = new Intent();
sharingIntent.setAction(Intent.ACTION_SEND);
sharingIntent.setType("text/plain");
sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Subject Here");
startActivity(Intent.createChooser(sharingIntent, "Share"));
}
결과 : 방법 아래
C) 국지적 그냥 메뉴 옵션을 엽니 다 : 그래서
public void showShareItemList3() {
openOptionsMenu(); // programmatically open the options menu
}
을 프로그래밍 방식으로 응용 프로그램의 공유 항목 목록을 열 수있는 방법이있다 ? 또는 적어도 프로그래밍 방식으로 메뉴 키를 누르는 방법이 있습니다 (= 프로그래밍 방식으로 메뉴 항목 선택)?
다른 문제는 입니다. 방향이 바뀌면 공유 목록이 보이는지 어떻게 알 수 있습니까? 이를 위해
나는 방법 onSaveInstanceState()
에 저장하고 onCreate()
방법을가 복원 boolean
변수 private boolean isShareOptionMenuListVisible = false;
을 사용하고 있습니다. Share 항목을 누를 때 isShareOptionMenuListVisible = true
을 만들었지 만 더 이상 보이지 않을 때 false로 설정할 수있는 방법을 찾지 못했습니다. onOptionsMenuClosed
오버라이드 메서드를 사용하면이 이 "옵션 메뉴가 닫힐 때마다 호출됩니다" (내 응용 프로그램에서는 절대 호출되지 않기 때문에 설명서에 포함되어 있습니다.) 공유 앱 옵션 메뉴가 닫히는시기를 알고 싶습니다.
다음은 위의 모든 문제를 보여주는 샘플 프로젝트입니다 : project link.
도움이되었습니다. 감사.