2017-05-04 1 views
0

Je veux juste ajouter searchview dans mon application. Mais je ne veux pas chercher n'importe quoi juste que je veux la question entrée par l'utilisateur. jusqu'ici j'ai essayé ce code mais quand je cours mon application il se bloque.Android- SearchView dans la barre d'outils

Mise à jour: J'ai essayé celui-ci, mais mon appli se bloque.

Code main_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="@android:drawable/ic_menu_search" 
    app:actionViewClass="android.support.v7.widget.SerachView" 
    app:showAsAction="always" 
/> 

MainActivity.java

public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater=getMenuInflater(); 
    inflater.inflate(R.menu.main_menu,menu); 
    SearchView searchView=(SearchView)findViewById(R.id.search); 
    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { 
     @Override 
     public boolean onQueryTextSubmit(String query) { 
     // Toast.makeText(this,query,Toast.LENGTH_LONG).show(); 
      return false; 
     } 

     @Override 
     public boolean onQueryTextChange(String newText) { 
      return false; 
     } 
    }); 
    return super.onCreateOptionsMenu(menu); 
} 

Quelqu'un peut-il me aider à résoudre ce problème s'il vous plaît. Merci.

+0

Temps d'utiliser un débogueur –

+0

Pourquoi avez-vous créé le SearchView directement au lieu de l'ajouter comme un élément de menu? –

+0

pouvez-vous explian comment ajouter via l'élément de menu depuis que je suis nouveau à android.please –

Répondre

1

permet de ne pas utiliser directement SearchView, dans votre 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=".HomeActivity"> 

    <item 
     android:id="@+id/action_search" 
     android:icon="@android:drawable/ic_menu_search" 
     android:title="Search" 
     app:actionViewClass="android.support.v7.widget.SearchView" 
     app:showAsAction="always" /> 
</menu> 

et ajoutez ce code simple à votre java:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case R.id.action_search: 
      // Not implemented here 
      return false; 
     default: 
      break; 
    } 
    searchView.setOnQueryTextListener(queryTextListener); 
    return super.onOptionsItemSelected(item); 
} 
0

Main_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/action_search" 
     app:actionViewClass="android.support.v7.widget.SearchView" 
     app:showAsAction="always|collapseActionView" 
     android:icon="@android:drawable/ic_menu_search" 
     android:title="Search" /> 
</menu> 

méthode onCreateOptionMenu

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.search_view_menu_item, menu); 
    MenuItem searchViewItem = menu.findItem(R.id.action_search); 
    final SearchView searchViewAndroidActionBar = (SearchView) MenuItemCompat.getActionView(searchViewItem); 
    searchViewAndroidActionBar.setOnQueryTextListener(new SearchView.OnQueryTextListener() { 
     @Override 
     public boolean onQueryTextSubmit(String query) { 
      searchViewAndroidActionBar.clearFocus(); 
      return true; 
     } 

     @Override 
     public boolean onQueryTextChange(String newText) { 
      return false; 
     } 
    }); 
    return super.onCreateOptionsMenu(menu); 
}