[英]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.