我有一个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"
确实为我解决了问题。但是,这似乎更像是一种解决方法而不是实际的解决方案。好吧......
答案 0 :(得分:1)
那么,为什么要尝试根据片段中的列表设置Activity的导航?这似乎是Activity应该做的事情。如果您确实需要片段来执行此操作,则片段可以在拥有活动(如果它实现接口)上调用方法来设置选项。只需设置选项列表,而不是实际的适配器(活动应该拥有适配器)。反过来,活动可以调用片段上的方法来指示选择了一个选项。