2016-06-24 14 views
0

Ich habe eine SearchView-Implementierung, die überhaupt nicht funktioniert. Ich habe viele Dinge ausprobiert, aber nichts funktioniert. (this, this und andere Antworten) Was mache ich falsch? Ich versuche, die Teilergebnisse zu protokollieren oder etwas, das mir sagt, dass es funktioniert, aber ich bekomme nichts.SearchView funktioniert nicht

Manifest.xml

<activity 
      android:name=".MapaActivity" 
      android:label="@string/title_activity_mapa" 
      android:screenOrientation="portrait"> 
      <intent-filter> 
       <action android:name="android.intent.action.SEARCH"/> 
      </intent-filter> 
     </activity> 

menu.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    tools:context="com.buweb.bu.MapaActivity"> 
    <item android:id="@+id/search" 
     android:title="@string/menu_search" 
     android:icon="@android:drawable/ic_menu_search" 
     app:showAsAction="collapseActionView|ifRoom" 
     app:actionViewClass="android.support.v7.widget.SearchView" /> 
</menu> 

Aktivität

public class MapaActivity extends BaseActivity implements OnMapReadyCallback, SearchView.OnQueryTextListener { 

... //A lot of code doing stuff with map. 



@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.menu_mapa, menu); 

     MenuItem searchItem = menu.findItem(R.id.search); 
     SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem); 
     searchView.setOnQueryTextListener(this); 

     return true; 
    } 


    @Override 
    public boolean onQueryTextSubmit(String query) { 
     Log.d("", "query:" + query); 
     return false; 
    } 

    @Override 
    public boolean onQueryTextChange(String newText) { 
     Log.d("", "query:" + newText); 
     return false; 
    } 
+0

Kasse diese http://androidquake.blogspot.in/2015/12/searching-in-list.html – Singhak

Antwort

0

Sie fehlen einige Umset mentierungen:

1-Erstellen eine durchsuchbaren Konfiguration: Eine durchsuchbare Konfiguration definiert, wie die Suche verhält und in einer res/xml/searchable.xml Datei definiert.

<?xml version="1.0" encoding="utf-8"?> 

<searchable xmlns:android="http://schemas.android.com/apk/res/android" 
     android:label="@string/app_name" 
     android:hint="@string/search_hint" /> 

2- In Ihrer Manifest-Datei der Anwendung, erklären ein <meta-data> Element, das zur res/xml/searchable.xml Datei verweist, so dass die Anwendung weiß, wo sie zu finden. Deklarieren Sie das Element in einem <activity>, dass Sie die Suche in angezeigt werden soll:

<activity ... > 
    ... 
    <meta-data android:name="android.app.searchable" 
      android:resource="@xml/searchable" /> 

</activity> 

3- Im onCreateOptionsMenu() Methode, die Sie vorher erstellt haben, ordnen Sie die durchsuchbare Konfiguration mit dem Search von setSearchableInfo(SearchableInfo) Aufruf:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.options_menu, menu); 

    // Associate searchable configuration with the SearchView 
    SearchManager searchManager = 
      (SearchManager) getSystemService(Context.SEARCH_SERVICE); 
    SearchView searchView = 
      (SearchView) menu.findItem(R.id.search).getActionView(); 
    searchView.setSearchableInfo(
      searchManager.getSearchableInfo(getComponentName())); 

    return true; 
} 

Für weitere Informationen können Sie auf die folgenden Links verweisen:

+0

dies getan, aber immer noch funktioniert nicht. – Aiapaec

+0

Sehen Sie @NPike unter https://Stackoverflow.com/a/15735869/2449314 grundsätzlich, nicht hart die Zeichenfolgen in der XML-Datei –