Я пытаюсь получить представление поиска, чтобы отображать ранее введенные поисковые запросы, когда пользователь начинает печатать.
Я следовал всем инструкциям здесь, по адресу http://developer.android.com/guide/topics/search/adding-recent-query-suggestions.html и посмотрел в разных других местах, но, похоже, я не могу заставить его работать.
Я использую представление поиска для фрагмента в своем приложении, которое позволяет пользователям просматривать расписание автобусов для определенной остановки. Код ниже.
transit.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"
android:title="Search"
android:icon="@android:drawable/ic_menu_search"
app:showAsAction="always"
app:actionViewClass="android.support.v7.widget.SearchView"
android:searchSuggestAuthority="com.teamzeta.sfu.utilities.BusSuggestionProvider"
android:searchSuggestSelection=" ?"/>
</menu>
BusSuggestionProvider
package com.teamzeta.sfu.utilities;
import android.content.SearchRecentSuggestionsProvider;
public class BusSuggestionProvider extends SearchRecentSuggestionsProvider{
public final static String AUTHORITY = "com.teamzeta.sfu.utilities.BusSuggestionProvider";
public final static int MODE = DATABASE_MODE_QUERIES;
public BusSuggestionProvider() {
setupSuggestions(AUTHORITY, MODE);
}
}
поиск.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/stop_number"
android:searchSuggestAuthority="com.teamzeta.sfu.utilities.BusSuggestionProvider"
android:searchSuggestSelection=" ?">
</searchable>
NextBusFragment onCreateOptionsMenu
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.transit, menu);
MenuItem searchViewItem = menu.findItem(R.id.action_search);
SearchView searchView = (SearchView) searchViewItem.getActionView();
searchView.setIconifiedByDefault(false);
searchView.setInputType(InputType.TYPE_CLASS_NUMBER);
searchView.setQueryHint(getResources().getString(R.string.stop_number));
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String s) {
search(s);
SearchRecentSuggestions suggestions = new SearchRecentSuggestions(getActivity(), BusSuggestionProvider.AUTHORITY, BusSuggestionProvider.MODE);
suggestions.saveRecentQuery(s, null);
return false;
}
@Override
public boolean onQueryTextChange(String s) {
return false;
}
});
}
Поставщик манифеста
<provider android:name="com.teamzeta.sfu.utilities.BusSuggestionProvider"
android:authorities="com.teamzeta.sfu.utilities.BusSuggestionProvider" />
<meta-data android:name="android.app.searchable"
android:resource="@xml/searchable"/>
Метод search()
срабатывает и извлекает список шин из API, а затем отображает его на экране в виде списка.
Может ли кто-нибудь понять, почему это не показывает историю?
Большое спасибо!
onQueryTextSubmit
? Является ли значение s правильным? - person MysticMagicϡ   schedule 10.11.2014