2012-03-18 110 views
5

我使用sherlockfragmentactivity,它具有ViewPager,兩個片段和一個顯示兩個選項卡的ActionBar。我填充操作的項目從片段,但我要調用的方法ActionItem在屏幕旋轉中丟失

setHasOptionsMenu(true); 

級別比片段顯示的動作條菜單項。 但是,當屏幕方向改變時,MenuItems不會顯示。

這裏是我的代碼在我的第一個片段來創建一個選項菜單:

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動作條,我怎麼可以讓這些項目在動作條後屏幕方向改變?

+2

我不知道它是否是最好的解決方案,但由於我有一個已知的固定數量的片段,我在我的SherlockActivity的'onCreate'方法中實例化它們,並在instanciation之後調用:'invalidateOptionsMenu();'然後在我的片段的'onActivityCreated'方法,在我必須做的那裏之後,我調用'setHasOptionsMenu(true);'。因此,即使在屏幕方向之後,我的ActionItems也會顯示在每個片段中。 – Kowlown 2012-03-20 13:31:00

回答

0

按照您的FragmentActivity線在manifeast文件中添加 android:configChanges="orientation"

方向自動由系統本身來處理。但我不知道天氣是否有效。

+0

+1。它的工作感謝.. – 2012-07-23 09:29:59

+0

使用'android:configChanges =「方向」'是[不推薦](http://www.androiddesignpatterns.com/2013/04/retaining-objects-across-config-changes.html#bad -practice-保留最活性) – matoni 2017-07-31 20:58:31