我想在工具栏中添加一个搜索放大类按钮。到目前为止,我有以下代码:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_search, menu);
SearchView search = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.search));
// Associate searchable configuration with the SearchView
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
search.setSearchableInfo(searchManager.getSearchableInfo(new ComponentName(this, SearchResultsActivity.class)));
search.setQueryHint(getResources().getString(R.string.search_hint));
return true;
}
然而,这不是我想要的行为。
我希望搜索能立即打开一个新的活动,用户可以在工具栏中键入并立即执行查询,而不必再次单击搜索。
原因-我想使用Algolia来填充实时搜索结果。我不想在初始Activity
上执行此操作;我只想允许用户单击搜索,导航到与Algolia链接的新Activity
,然后开始键入第二个Activity
以查看实时搜索结果。
欢迎提出任何建议!
使用此代码
main_menu.xml
<?xml version="1.0" encoding="utf-8"?>
<item
android:id="@+id/option_search"
android:icon="@drawable/icon_search"
android:orderInCategory="100"
app:showAsAction="always"
android:title="Search" />
现在在你的主要活动中,喜欢这个
主活动.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection
switch (item.getItemId()) {
case R.id.option_search:
//go to search
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}
这将以你期望的方式工作