#java #android #android-fragments
#java #Android #android-фрагменты
Вопрос:
Я пытаюсь реализовать фильтр поиска в моем фрагменте, но это мне не позволяет. Я использовал тот же код в Activity раньше, и это сработало. Всякий раз, когда я что-то печатаю, onCreateOptionsMenu()
не вызывается. Приложение выглядит следующим образом: [![Изображение приложения][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
, потому что это должно работать просто отлично. Просто фрагмент не получает доступа к searchItem.
Кто-нибудь? 🙂 [1]:https://i.stack.imgur.com/JkLcL.png
Ответ №1:
Вы вызвали setMenuVisibility()
, что означает, что ваш фрагмент специально отказывается от отображения своего меню. Ожидается, что, когда ваше меню не отображается, onCreateOptionsMenu()
не запускается.
Удалите эту строку кода, чтобы ваше меню действительно было видно.