SearchView null pointer

Heaven

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

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    ***************().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);
        ************ inflater = ***************();
        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">
    </menu>

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

1 ответ

Heaven

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

licensed under cc by-sa 3.0 with attribution.