1
我试图在我的应用程序中实现SearchView小部件。SearchView小部件从未启动可搜索结果活动
问题:当我按搜索时,我的Searchable活动从未启动以显示结果。由于某种原因,SearchView小部件未链接到结果活动。
下面是相关代码:
AndroidManifest.xml中
<!--ACTIVITY WITH SEARCHVIEW WIDGET-->
<activity
android:name=".activity.LocationManagerActivity"
android:label="@string/title_activity_location_manager" >
<meta-data
android:name="android.app.default_searchable"
android:value=".activity.LocationManagerResultsActivity" />
</activity>
<!--ACTIVITY TO DISPLAY RESULTS-->
<activity
android:name=".activity.LocationManagerResultsActivity"
android:launchMode="singleTop"
android:label="@string/title_activity_location_manager_results" >
<intent-filter>
<action android:name="android.intent.action.search" />
</intent-filter>
<meta-data
android:name="android.app.searchable"
android:resource="@xml/searchable" />
</activity>
LocationManagerActivity.class
public class LocationManagerActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_location_manager);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_location_manager, menu);
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchView searchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.location_manager_menu_search));
ComponentName componentName = new ComponentName(this, LocationManagerResultsActivity.class);
searchView.setSearchableInfo(searchManager.getSearchableInfo(componentName));
return true;
}
}
LocationManagerResultsActivity.class
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_location_manager_results);
handleIntent(getIntent());
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
handleIntent(intent);
}
private void handleIntent(Intent intent) {
Toast.makeText(this, "have intent", Toast.LENGTH_SHORT);
if(intent.getAction().equals(Intent.ACTION_SEARCH)) {
String query = intent.getStringExtra(SearchManager.QUERY);
doSearch(query);
}
}
LocationManagerResultsActivity永远不会由LocationManagerActivity SearchView实际创建。
我所做的一切,我能找到的所有其他问题
- 添加
default_searchable
到基底活动 - 添加
android.app.searchable
和@xml/searchable
可搜索的活动 - 变化
getComponentName()
获得搜索活动的组成部分名称
换句话说,我可以输入东西进入搜索栏,bu当我按搜索时,没有任何反应。
我在做什么错?