我想在工具栏上添加一个搜索放大类按钮。到目前为止,我有以下代码:
@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
以查看实时搜索结果。
任何建议都值得赞赏!
答案 0 :(得分:1)
使用此代码
<?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" />
现在在您的主要活动中这样做
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);
}
}
}
这将按照您期望的方式工作