SearchView null pointer

275
16 января 2017, 19:29

SearchView не получается инициализировать, выдает null:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.navigation_drawer, menu);
    menu.setGroupVisible(R.id.groupVsbl, true);
    if(listFragment != null && listFragment.isVisible()) {
        menu.add(0, R.id.action_search, 0, "").setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS
                | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.navigation_drawer_search, menu);
        MenuItem itemSearch = menu.findItem(R.id.action_search);
        SearchManager searchManager = (SearchManager) NavigationDrawer.this.getSystemService(Context.SEARCH_SERVICE);
        SearchView searchView = (SearchView) MenuItemCompat.getActionView(itemSearch);
        if (searchView != null) {
            searchView.setSearchableInfo(searchManager.getSearchableInfo(NavigationDrawer.this.getComponentName()));
            searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
                @Override
                public boolean onQueryTextSubmit(String query) {
                    return false;
                }
                @Override
                public boolean onQueryTextChange(String newText) {
                    return false;
                }
            });
        }
    }
    return super.onCreateOptionsMenu(menu);
}

И собственно само меню:

    <?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/action_search"
        android:orderInCategory="100"
        app:actionViewClass="android.widget.SearchView"
        app:showAsAction="always"
        android:showAsAction="collapseActionView|ifRoom"
        android:title="Title" />
</menu>

В строке, где идет проверка на null (if (searchView != null) ), searchView всё равно остается null, несмотря на то что я выше её объявил.

Answer 1

Если itemSearch != null, значит R.id.action_search в меню несколько и возвращается первый и не тот что надо.

READ ALSO
Создание сайта путем &ldquo;рисования&rdquo; его в Adobe Illustrator(AI)

Создание сайта путем “рисования” его в Adobe Illustrator(AI)

Как это происходит? Сайты состоят из html кода, css и js(я про визуальную часть)

264
Почему JS код блокирует submit

Почему JS код блокирует submit

Есть форма на ASPNET MVC

248
Как выбрать admin dashboard для сайта?

Как выбрать admin dashboard для сайта?

Для небольшого сервиса нужна простая админка для добавления и редактирования записей, теговГугль выдает кучу подборок всяких admin dashboard, но как...

306
Загрузка background на сайте

Загрузка background на сайте

В стилях jsp-страницы, в body для background ставлю картинку

380