我尝试使用以下方法,但无法显示最近的搜索记录
Create "history" to SearchView on ActionBar
Implementing SearchView in action bar
请帮助如何在serachview中搜索xml
创建和显示最近的搜索答案 0 :(得分:0)
这是我正在使用的步骤
Searchable xml file
<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
android:label="@string/app_label"
android:hint="@string/search_hint"
android:searchSuggestAuthority="example.com.cle.MySuggestionProvider"
android:searchSuggestSelection=" ?"
>
</searchable>
Provider
<provider android:name=".MySuggestionProvider"
android:authorities="example.com.cle.MySuggestionProvider" />
Activity in manifiest
<activity
android:name=".BaseActivity"
android:configChanges="orientation|screenSize|keyboardHidden"
android:theme="@style/AppTheme.ActionBar">
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
<meta-data
android:name="android.app.searchable"
android:resource="@xml/searchable" />
Activity class
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = getIntent();
if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
String query = intent.getStringExtra(SearchManager.QUERY);
SearchRecentSuggestions suggestions = new SearchRecentSuggestions(this,
MySuggestionProvider.AUTHORITY, MySuggestionProvider.MODE);
suggestions.saveRecentQuery(query, null);
}
}
Content provider class
public final static String AUTHORITY ="example.com.cle.MySuggestionProvider";
public final static int MODE = DATABASE_MODE_QUERIES;
public MySuggestionProvider() {
setupSuggestions(AUTHORITY, MODE);
}
答案 1 :(得分:0)
我得到了解决方案
1.create xml folder searchable
<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
android:label="@string/app_label"
android:hint="@string/search_hint" android:searchSuggestAuthority="your packagename.MySuggestionProvider"
android:searchSuggestSelection=" ?" >
</searchable>
2.create content provider class extends SearchRecentSuggestionsProvider
public class MySuggestionProvider extends SearchRecentSuggestionsProvider {
public final static String AUTHORITY = "your package name.MySuggestionProvider";
public final static int MODE = DATABASE_MODE_QUERIES;
public MySuggestionProvider() {
setupSuggestions(AUTHORITY, MODE);
}
}
oncreate方法
handledearch(getIntent());
4. over ride method
@Override
protected void onNewIntent(Intent intent) {
setIntent(intent);
handledearch(intent);
}
public void handledearch( Intent intent)
{
if (Intent.ACTION_SEARCH.equalsIgnoreCase(intent.getAction())) {
String query = intent.getStringExtra(SearchManager.QUERY);
mtToolbar.setTitle(query);
SearchRecentSuggestions searchRecentSuggestions=new SearchRecentSuggestions(this,
MySuggestionProvider.AUTHORITY,MySuggestionProvider.MODE);
searchRecentSuggestions.saveRecentQuery(query,null);
}
}
@覆盖 public boolean onCreateOptionsMenu(菜单菜单){
getMenuInflater().inflate(R.menu.menu,menu);
SearchManager searchManager=(SearchManager)getSystemService(Context.SEARCH_SERVICE);
SearchView searchView;
MenuItem menuItem=menu.findItem(R.id.action_search);
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
{
searchView=(SearchView)menuItem.getActionView();
}
else
{
searchView=(SearchView) MenuItemCompat.getActionView(menuItem);
}
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
searchView.setQueryHint(getResources().getString(R.string.search_hint));
return super.onCreateOptionsMenu(menu);
}