Android 如何在工具栏中隐藏菜单项(查看寻呼机、嵌套片段)
我的问题是: 我有一个Android 如何在工具栏中隐藏菜单项(查看寻呼机、嵌套片段),android,android-fragments,android-viewpager,Android,Android Fragments,Android Viewpager,我的问题是: 我有一个活动,带有工具栏和查看页面,其中包含三个主要片段,其中两个具有嵌套的片段: [1] RootMapFrag, MarkerMapFrag 热图 [2] 根列表框, ListFrag WebViewFrag [3] 格拉夫弗拉格 在ListFragment中,我创建了带有搜索按钮的菜单,用于过滤回收器视图,该菜单在片段中实现。在我的整个应用程序中,只有一个按钮在ListFragment中初始化搜索按钮工作正常,但在[1]和[3]选项卡上也可见。有没有办法从这些选项
活动
,带有工具栏
和查看页面
,其中包含三个主要片段
,其中两个具有嵌套的片段
:
- [1] RootMapFrag,
- MarkerMapFrag
- 热图
- [2] 根列表框,
- ListFrag
- WebViewFrag
- [3] 格拉夫弗拉格
ListFragment
中,我创建了带有搜索按钮的菜单,用于过滤回收器视图
,该菜单在片段
中实现。在我的整个应用程序中,只有一个按钮在ListFragment
中初始化<代码>搜索按钮工作正常,但在[1]和[3]选项卡上也可见。有没有办法从这些选项卡中隐藏它?我试图在片段中通过设置menu.getItem(R.id.action\u search).setVisible(false)
和invalidateOptionsMenu()
来实现设置选项菜单(true)
和onPrepareOptionsMenu
,它们不需要这个菜单项,但没有任何用处。有没有办法做到这一点?这是我的密码:
RootListFragment
public class RootListFragment extends Fragment {
private FragmentManager fragmentManager;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_root_list, container, false);
fragmentManager = getChildFragmentManager();
fragmentManager.beginTransaction().add(R.id.root_list_fragment, new ListFragment()).commit();
return view;
}
}
public class ListFragment extends Fragment implements SearchView.OnQueryTextListener {
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_list, container, false);
...
return view;
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.main_menu, menu);
MenuItem item = menu.findItem(R.id.action_search);
SearchView searchView = (SearchView) MenuItemCompat.getActionView(item);
searchView.setOnQueryTextListener(this);
MenuItemCompat.setOnActionExpandListener(item,
new MenuItemCompat.OnActionExpandListener() {
@Override
public boolean onMenuItemActionExpand(MenuItem item) {
return true;
}
@Override
public boolean onMenuItemActionCollapse(MenuItem item) {
return true;
}
});
}
}
public class GraphFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_graph, container, false);
...
return view;
}
@Override
public void onPrepareOptionsMenu(Menu menu) {
menu.getItem(R.id.action_search).setVisible(false);
super.onPrepareOptionsMenu(menu);
}
}
ListFragment
public class RootListFragment extends Fragment {
private FragmentManager fragmentManager;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_root_list, container, false);
fragmentManager = getChildFragmentManager();
fragmentManager.beginTransaction().add(R.id.root_list_fragment, new ListFragment()).commit();
return view;
}
}
public class ListFragment extends Fragment implements SearchView.OnQueryTextListener {
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_list, container, false);
...
return view;
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.main_menu, menu);
MenuItem item = menu.findItem(R.id.action_search);
SearchView searchView = (SearchView) MenuItemCompat.getActionView(item);
searchView.setOnQueryTextListener(this);
MenuItemCompat.setOnActionExpandListener(item,
new MenuItemCompat.OnActionExpandListener() {
@Override
public boolean onMenuItemActionExpand(MenuItem item) {
return true;
}
@Override
public boolean onMenuItemActionCollapse(MenuItem item) {
return true;
}
});
}
}
public class GraphFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_graph, container, false);
...
return view;
}
@Override
public void onPrepareOptionsMenu(Menu menu) {
menu.getItem(R.id.action_search).setVisible(false);
super.onPrepareOptionsMenu(menu);
}
}
GraphFragment
public class RootListFragment extends Fragment {
private FragmentManager fragmentManager;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_root_list, container, false);
fragmentManager = getChildFragmentManager();
fragmentManager.beginTransaction().add(R.id.root_list_fragment, new ListFragment()).commit();
return view;
}
}
public class ListFragment extends Fragment implements SearchView.OnQueryTextListener {
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_list, container, false);
...
return view;
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.main_menu, menu);
MenuItem item = menu.findItem(R.id.action_search);
SearchView searchView = (SearchView) MenuItemCompat.getActionView(item);
searchView.setOnQueryTextListener(this);
MenuItemCompat.setOnActionExpandListener(item,
new MenuItemCompat.OnActionExpandListener() {
@Override
public boolean onMenuItemActionExpand(MenuItem item) {
return true;
}
@Override
public boolean onMenuItemActionCollapse(MenuItem item) {
return true;
}
});
}
}
public class GraphFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_graph, container, false);
...
return view;
}
@Override
public void onPrepareOptionsMenu(Menu menu) {
menu.getItem(R.id.action_search).setVisible(false);
super.onPrepareOptionsMenu(menu);
}
}
以下是我的应用程序中的gif:
在片段中,如果您不想显示任何菜单选项,则需要设置选项菜单(false)在onCreate()
中的code>,如下所示:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(false);
}