出现工具栏但没有菜单项。 如果我将代码移动到活动,则会调用相应的onCreateOptionsMenu。 如果我回到操作栏,片段版本可以正常工作。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Toolbar toolbar = (Toolbar) getActivity().findViewById(R.id.imd_toolbar);
((AppCompatActivity) getActivity()).setSupportActionBar(toolbar);
setHasOptionsMenu(true);
}
因为这个和更复杂的生命周期,我想要去零碎(n00b这里顺便说一句),而且我并不打算做平板电脑特殊布局。 仍然让我感到不安的是,其他人没有发生这种情况,请告诉我这是否已知或只是我的问题。
谢谢!
答案 0 :(得分:0)
创建您的menu
文件,如下所示:
<强> sample_menu.xml 强>:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/menu_sms_ticket"
android:title="@string/menu_sms_ticket"
android:visible="false"/>
</menu>
在activity
添加此menu
文件并更改添加toolbar
的代码后,请在activity
内进行操作。在fragment
中,拨打setHasOptionMenu(true)
并覆盖以下功能:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
menu.getItem(0).setVisible(true);
}
如果这是你想要的,请试试这个让我知道。
答案 1 :(得分:0)
我发现了问题。
更改此行:
Toolbar toolbar = (Toolbar) getActivity().findViewById(R.id.imd_toolbar);
对于这样的事情:
Toolbar toolbar = (Toolbar) rootView.findViewById(R.id.imd_toolbar);
示例:
Toolbar toolbar;
private View rootView;
rootView = inflater.inflate(R.layout.fragment_top_rated, container, false);
toolbar = (Toolbar) rootView.findViewById(R.id.tool_bar1);
我认为问题的原因是片段中的getActivity()
会返回片段当前与之关联的活动,而非查看。