簡體   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