我正在使用Android搜索对话框。
我的主要活动有行动栏项目搜索。我在项目点击时打开我的可搜索活动: -
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.activity_search_menu_search_item:
startActivity(new Intent(this, SearchableActivity.class));
return true;
default:
return super.onOptionsItemSelected(item);
}
}
在onCreate可搜索活动中打开搜索对话框,如果搜索对话框被顶部后退箭头或后退按钮关闭,则关闭可搜索活动: -
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_searchable);
onSearchRequested();
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
searchManager.setOnDismissListener(new SearchManager.OnDismissListener() {
@Override
public void onDismiss() {
finish();
}
});
}
我已在清单中将可搜索的活动声明为singleTop: -
<activity android:name=".SearchableActivity"
android:launchMode="singleTop">
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
<meta-data
android:name="android.app.searchable"
android:resource="@xml/searchable" />
</activity>
在可搜索活动的onNewIntent中获取搜索查询: -
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
String query = intent.getStringExtra(SearchManager.QUERY);
Log.e("Here", "new intent = "+query);
}
}
现在,当我输入搜索查询并单击键盘的搜索图标时,搜索对话框将关闭(我希望它保持打开并在onNewIntent方法中获取搜索查询),然后调用onDismissListener并且活动也将关闭。我在OnNewIntent中获取搜索查询。