我正在编写需要创建选项菜单的代码,我遵循了一些有关如何在片段活动中实现此菜单的教程,但是由于某些原因,我正在使用的代码未显示该菜单。有人知道会是什么吗?
ProfileFragment
public class ProfileFragment extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_profile, container, false);
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
setHasOptionsMenu(true);
super.onCreate(savedInstanceState);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.profile_menu, menu);
super.onCreateOptionsMenu(menu, inflater);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id) {
case R.id.edit_profile:
break;
case R.id.change_password:
break;
case R.id.log_out:
break;
}
return super.onOptionsItemSelected(item);
}
}
XML
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#10c0bd"
android:minHeight="?attr/actionBarSize"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:theme="@style/ThemeOverlay.AppCompat.Dark" />
答案 0 :(得分:0)
可能是因为您尝试在setHasOptionsMenu(true);
而非OnCreate
上设置OnCreateView
。
尝试从setHasOptionsMenu(true);
删除OnCreate
并将其添加到OnCreateView
答案 1 :(得分:0)
尝试一下
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.profile_menu, menu);
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
答案 2 :(得分:0)
首先在片段中覆盖创建方法,然后编写 setHasOptionsMenu(true)
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
然后在Fragment中覆盖OnPrepareOptionMenu方法,然后编写放置在其中的代码。 我只隐藏搜索菜单。同样,您可以根据自己的选择隐藏所有菜单项或选择项。
@Override
public void onPrepareOptionsMenu(Menu menu) {
MenuItem item=menu.findItem(R.id.menu_search);
if(item!=null)
item.setVisible(false);
}