2017-07-01 8 views
0

Ich habe eine searchView in der Symbolleiste als Optionsmenü.item.getActionview() gibt immer Null

Immer wenn ich versuche setOnQueryTextListener einstellen es gibt mir ein NullPointerException:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater menuInflater = getMenuInflater(); 
    menuInflater.inflate(R.menu.menu, menu); 
    MenuItem item = menu.findItem(R.id.search); 
    SearchView searchView = (SearchView) item.getActionView(); //searchView: null item: "Search" 
    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { //searchView: null 
     @Override 
     public boolean onQueryTextSubmit(String query) { 
      return false; 
     } 

     @Override 
     public boolean onQueryTextChange(String newText) { 
      newText = newText.toLowerCase(); 
      ArrayList<Note> newNotes = new ArrayList<>(); 
      for(Note note: notes){ 
       String name = note.getTitle().toLowerCase(); 
       if(name.contains(newText)){ 
        newNotes.add(note); 
       } 
      } 
      noteListAdapter.setFilter(newNotes); 
      return true; 
     } 
    }); 
    return true; 
} 

Dinge, die ich schon getan und hat nicht funktioniert:

-keep class android.support.v7.widget.SearchView { *; } Hinzufügen ProGuard-Datei.

Implementierung SearchView.OnQueryTextListener auf meiner Java-Klasse.

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/search" 
     android:title="Search" 
     android:icon="@mipmap/search" 
     app:showAsAction="always|collapseActionView" 
     app:actionViewClass="android:support.v7.widget.SearchView"/> 

    <item 
     android:id="@+id/share" 
     android:title="Share" 
     android:icon="@mipmap/share" 
     app:showAsAction="ifRoom"/> 

</menu> 

Antwort

1

Sie haben seinso verwenden

<item 
     android:id="@+id/search" 
     android:title="Search" 
     android:icon="@mipmap/search" 
     app:showAsAction="always|collapseActionView" 
     app:actionViewClass="android.support.v7.widget.SearchView"/> 
1

SIE DIESE DIESE einen Tippfehler TUST sollte es android.support nicht android:support

SearchView search = (SearchView) findItem(R.id.search).getActionView(); 

PLEASE DO

SearchView search = (SearchView) menu.findItem(R.id.search).getActionView(); 

<item 
     android:id="@+id/search" 
     android:title="Search" 
     android:icon="@mipmap/search" 
     app:showAsAction="always|collapseActionView" 
     app:actionViewClass="android.support.v7.widget.SearchView"/> 
+0

ich es auch versucht haben, aber es gibt nach wie vor mir Nullpointer auf Suche –

+0

i eindeutig im OP-Code zu sehen 'menu.findItem (R.id.search);', nicht sehen können, die Linie, auf die du dich in deiner Antwort beziehst –

Verwandte Themen