2014-02-08 5 views
1

У меня есть вид поиска в моей деятельности. Когда я пытаюсь подключить OnQueryTextListener, он дает мне исключение NullPointerException. Ее Java код выглядит следующим образомПрикрепление OnQueryTextListener к SearchView дает NullPointerException

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.allpurpose, menu); 
    MenuItem  searchItem = menu.findItem(R.id.apmenu_search); 
    SearchView  searchView = (SearchView) MenuItemCompat.getActionView(searchItem); 
    SearchView.OnQueryTextListener queryTextListener = new SearchView.OnQueryTextListener() { 
     public boolean onQueryTextChange(String newText) {return true;} 
     public boolean onQueryTextSubmit(String query) {return true;} 
    }; 
    searchView.setOnQueryTextListener(queryTextListener); 
    return super.onCreateOptionsMenu(menu); 
} 

XML код:

<?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/apmenu_search" 
    android:icon="@android:drawable/ic_menu_search" 
    android:title="@string/srch" 
    android:showAsAction="ifRoom" 
    android:actionViewClass="android.support.v7.widget.SearchView" /> 
</menu> 
+0

см [MenuItemCompat.getActionView всегда возвращает нуль] (http://stackoverflow.com/questions/18438890/menuitemcompat-getactionview-always-returns-null) может помочь вам –

+0

мне не помогло ..... все же такое же исключение – EdmDroid

ответ

1

Все "Compat" элементы используются для обеспечения обратной совместимости. Таким образом, в этом случае MenuItemCompat поддерживает элементы панели действий для версий выше 7 (вместо обычного 11). В java-коде, если есть MenuItemCompat, то в xml тоже должен быть элемент «Совместимость». Теперь пространство имен «приложение» поддерживает эти элементы «Совместимость». Так изменить XML, как это:

<?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/apmenu_search" 
      android:icon="@android:drawable/ic_menu_search" 
      android:title="@string/srch" 
      app:showAsAction="ifRoom" 
      app:actionViewClass="android.support.v7.widget.SearchView" /> 
</menu> 
Смежные вопросы