2012-03-18 4 views
5

ViewPager가있는 sherlockfragmentactivity, 두 개의 Fragment 및 두 개의 탭이 표시된 ActionBar를 사용합니다. 나는 조각에서 작업 항목을 채울하지만 난 조각을 표시 실행 바 MenuItem에 비해 위하여 방법을화면 회전시 ActionItem이 손실되었습니다.

setHasOptionsMenu(true); 

를 호출해야합니다. 그러나 화면 방향이 변경되면 MenuItem이 표시되지 않습니다.

public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    super.onCreateOptionsMenu(menu, inflater); 
    menu.add(R.string.action_refresh).setIcon(R.drawable.ic_menu_refresh) 
      .setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { 

       public boolean onMenuItemClick(MenuItem item) { 
        refresh(); 
        return false; 
       } 
      }).setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM); 
    menu.add(R.string.action_add_a_file).setIcon(R.drawable.ic_menu_upload) 
      .setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM); 
    menu.add(R.string.action_settings).setIcon(android.R.drawable.ic_menu_preferences) 
      .setIntent(new Intent(getSherlockActivity(), SettingsActivity.class)) 
      .setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_NEVER | MenuItem.SHOW_AS_ACTION_WITH_TEXT); 

} 

가 제대로 SherlockFragment에서 작업 표시 줄에 항목을 추가하는 방법이 어떻게 난 후 액션 바에서이 항목을 유지할 수 있습니다 : 여기

내 첫 조각에서 옵션 메뉴를 만드는 내 코드입니다 화면 방향 변경? manifeast 파일에 FragmentActivity 라인을 다음

+2

만약 이것이 가장 좋은 해결책인지 모르겠지만, 알려진 고정 숫자의 조각을 가지고 있기 때문에, 나는 그것들을'SherlockActivity '의'onCreate' 메소드에서 인스턴스화하고 인스턴스 생성 후에 호출합니다 :'invalidateOptionsMenu();'그런 다음 내 조각의'onActivityCreated' 메소드는,'setHasOptionsMenu (true); '를 호출해야만합니다. 따라서 화면 방향을 지정해도 각 조각에 대한 내 ActionItem이 표시됩니다. – Kowlown

답변

0

추가는 android:configChanges="orientation"

방향은 자동으로 시스템 자체에 의해 처리됩니다. 하지만 나는 그것이 효율적인 방법인지 아닌지를 모른다.

+0

+1. 그 덕분에 .. –

+0

'android : configChanges = "orientation"'을 사용하는 것은 권장하지 않습니다. (http://www.androiddesignpatterns.com/2013/04/retaining-objects-across-config-changes.html#bad -practice-retain-the-activity) – matoni

관련 문제