0

我有一个SherlockListFragment通过使用将导航模式列表微调器放在操作栏中的setNavigationMode(ActionBar.NAVIGATION_MODE_LIST). 这很好用,但我注意到导航微调器在改变方向时消失了。我设法弄清楚这是因为我调用setRetainInstance(true);,将其设置为 false 修复了导航微调器消失的问题,但我确实需要保留此片段的实例,因此将其设置为 false 是没有选择的。

我尝试回忆setNavigationMode(ActionBar.NAVIGATION_MODE_LIST)方向变化,但这并没有解决问题。旋转器似乎永远消失了......

是什么导致操作栏中的导航微调器在更改方向时消失?我怎么把它带回来?

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);         
        AsyncTask<String, Integer, String[]> asynctask = new DownloadFilesTask(this).execute(url);
        setRetainInstance(true);        
        Context context = getSherlockActivity().getSupportActionBar().getThemedContext();
        ArrayAdapter<CharSequence> list = ArrayAdapter.createFromResource(context, R.array.options, R.layout.sherlock_spinner_item);
        list.setDropDownViewResource(R.layout.sherlock_spinner_dropdown_item);
        getSherlockActivity().getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);        
        getSherlockActivity().getSupportActionBar().setListNavigationCallbacks(list, this);
    }

编辑:

有人发布了使用的解决方案android:configChanges="orientation"并删除了他的答案。我对此进行了调查,并android:configChanges="orientation|screenSize"确实为我解决了问题。但是,这似乎更像是一种解决方法,而不是实际的解决方案。哦,好吧...

4

1 回答 1

1

那么,为什么要尝试根据 Fragment 中的列表设置 Activity 的导航?这似乎是 Activity 应该做的事情。如果您确实需要片段来执行此操作,片段可以调用拥有活动的方法(如果它实现了接口)来设置选项。只需设置选项列表,而不是实际的适配器(活动应该拥有适配器)。反过来,活动可以调用片段上的方法来指示选择了一个选项。

于 2013-03-31T15:35:49.713 回答