当我注意到Actionbar的大多数导航选项都在弃用时,我很快就开始用新的Android工具栏替换Actionbar。工作得很好我仍然遇到问题。我的工具栏中有一个微调器,内容在旋转时消失。
我的工具栏位于MainActivity的布局中,如下所示:
<android.support.v7.widget.Toolbar
android:id="@+id/act_main_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
</android.support.v7.widget.Toolbar>
在MainActivity中的onCreate中,我正在膨胀菜单按钮,徽标和微调器
mToolbar.setLogo(R.drawable.action_bar_icon);
Toolbar.inflate(this, R.layout.toolbar_spinner, mToolbar);
mToolbar.inflateMenu(R.menu.toolbar_menu);
在屏幕旋转时,Spinner的内容消失,微调器仍然只是空的。包含元素的SpinnerAdapter仍包含它们,就像已从工具栏中取消适配器一样。
编辑SpinnerAdapter创建的更新代码:
适配器设置在片段的onCreate中:
mToolbar = (Toolbar) getActivity().findViewById(R.id.act_main_toolbar);
mToolbarSpinner = (Spinner) mToolbar.findViewById(R.id.act_main_toolbar_spinner);
mToolbarSpinner.setAdapter(adapter);
然后我有asyncTasks检索数据,一旦检索完成,我使用以下调用来显示数据:
adapter.notifyDataSetChanged()
修改2
出现此问题是因为在屏幕旋转后对onCreate中创建的mToolbar的引用变得有问题。通过将以下内容移动到onCreateView,它开始工作:
mToolbar = (Toolbar) getActivity().findViewById(R.id.act_main_toolbar); //This fixed it!
mToolbarSpinner = (Spinner) mToolbar.findViewById(R.id.act_main_toolbar_spinner);
mToolbarSpinner.setAdapter(adapter);
答案 0 :(得分:1)
在屏幕方向更改后,片段中对mToolbar的引用不再正确。通过在 onCreateView 而不是 onCreate 中获取对mToolbar的新引用来解决此问题:
mToolbar = (Toolbar) getActivity().findViewById(R.id.act_main_toolbar);