繁体   English   中英

onCreateOptionsMenu() 在 Fragment 中不起作用

[英]onCreateOptionsMenu() does not work in Fragment

我正在尝试在我的 Fragment 中实现一个搜索过滤器,但它不允许我这样做。 我之前在 Activity 中使用了相同的代码并且它有效。 每当我键入内容时,都不会调用onCreateOptionsMenu() 该应用程序如下所示: [![app Picture][1]][1] 正如你所看到的,我在顶部输入了一些内容,它不会被过滤。

我的片段代码:`

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setHasOptionsMenu(true);
    setMenuVisibility(false);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View RootView = inflater.inflate(R.layout.fragment_tab1, container, false);
    if(getArguments() != null){
        String yourText = getArguments().getString("interessen");
        System.out.println(yourText);
    }`

. . .

 @Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    super.onCreateOptionsMenu(menu, inflater);

    inflater.inflate(R.menu.menuevents, menu);
    super.onCreateOptionsMenu(menu, inflater);
    MenuItem searchitem = menu.findItem(R.id.searchEvent);
    //searchitem.setVisible(false);
    final SearchView searchView = (SearchView) searchitem.getActionView();
    final List<Event> allEvents = new ArrayList<>();
    allEvents.addAll(eventList);

    searchitem.setOnActionExpandListener(new MenuItem.OnActionExpandListener() {
        @Override
        public boolean onMenuItemActionExpand(MenuItem item) {
            eventList.clear();
            eventList.addAll(allEvents);
            return true;
        }

        @Override
        public boolean onMenuItemActionCollapse(MenuItem item) {

            eventList.clear();
            eventList.addAll(allEvents);
            return true;
        }
    });
    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String query) {
            return false;
        }

        @Override
        public boolean onQueryTextChange(String newText) {
            eventListAdapter.getFilter().filter(newText);
            return false;
        }

    });

我没有复制EventListAdapter ,因为这应该可以正常工作。 只是 Fragment 无法访问 SearchItem。

有人吗? :) [1]: https://i.stack.imgur.com/JkLcL.png

您已调用setMenuVisibility() ,这意味着您的 Fragment 专门选择不显示其菜单。 预计当您的菜单未显示时,不会触发onCreateOptionsMenu()

删除该行代码以使您的菜单真正可见。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM