2012-03-18 73 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