Android 는 내장 Fragment 에서 onCreate Options Menu 이 벤트 를 받 을 수 없 는 문 제 를 해결 합 니 다.

머리말
 포 함 된 2 급 Fragment 는 onCreate Options Menu 이벤트 의 문 제 를 받 아들 일 수 없 으 며,setHasOptions Menu 를 설정 해도 사용 되 지 않 습 니 다.
본문
 추가 설명:
  캐 시 Fragment 를 통 해 2 급 Fragment 를 수 동 으로 호출 하면 더 많은 Menu 가 표시 되 지 않 는 등 이상 한 문제 가 발생 할 수 있 습 니 다.
 해결 방법:
  1 급 Fragment 에 Menu 를 추가 하면 1 급 onOptions ItemSelected 에서 2 급 을 수 동 으로 호출 할 수 있 습 니 다.
예제 코드:

 @Override
  public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    switch (getSelectedPosition()) {
    case 1:
      inflater.inflate(R.menu.menu1, menu);
      break;
    case 2:
      inflater.inflate(R.menu.menu2, menu);
      break;
    case 0:
    default:
      inflater.inflate(R.menu.menu3, menu);
      break;
    }
  }

  @Override
  public boolean onOptionsItemSelected(MenuItem item) {
    Fragment fragment = getFragmentByPosition(getSelectedPosition());
    if (fragment != null)
      fragment.onOptionsItemSelected(item);
    return super.onOptionsItemSelected(item);
  }
코드 설명:
   예제 코드 는 1 급 Fragment 이 고 getFragment ByPosition 은 2 급 Fragment 를 되 돌려 줍 니 다.
이상 은 안 드 로 이 드 가 Fragment 가 onCreate Options Menu 이 벤트 를 받 아들 일 수 없 는 문 제 를 해결 하 는 것 입 니 다.안 드 로 이 드 가 개발 한 친구 들 이 비슷 한 문 제 를 해결 하 는 데 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기