2016-06-24 5 views
0

У меня есть реализация SearchView, которая не работает вообще. Я пробовал много чего, но ничего не работает. (this, this и другие ответы) Что я делаю неправильно? Я пытаюсь зарегистрировать частичные результаты или что-то, что говорит мне, что оно работает, но я ничего не получаю.SearchView не работает

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> 

активность

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

фотографии этого http://androidquake.blogspot.in/2015/12/searching-in-list.html – Singhak

ответ

0

Вы отсутствуют некоторые реали mentations:

1-Создание конфигурации с возможностью поиска: функцию поиска конфигурации определяет, как ведет себя SearchView и определяется в Рез/XML/searchable.xml файл.

<?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- В файле манифеста вашего приложения, объявить <meta-data> элемент, который указывает на файл Рез/XML/searchable.xml, так что ваше приложение знает, где его найти. Объявите элемент в <activity>, что вы хотите, чтобы отобразить SearchView в:

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

</activity> 

3- В onCreateOptionsMenu() метод, который вы создали ранее, ассоциируют для поиска конфигурации с SearchView по телефону setSearchableInfo(SearchableInfo):

@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; 
} 

для получения дополнительной информации вы можете обратиться к следующим ссылкам:

+0

Done, но до сих пор не работает. – Aiapaec

+0

См. Это @NPike по адресу https://stackoverflow.com/a/15735869/2449314 в основном, не печатайте строки в файле xml –

Смежные вопросы