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當我按搜索時,沒有任何反應。
我在做什麼錯?