无法获取android中搜索栏中输入的文本
我正在尝试为我的android应用程序实现搜索功能。我无法获取在搜索栏中输入的文本。我已经尝试了SO中提到的所有方法。请让我知道我犯了什么错误。我挣扎了很久 我的代码:无法获取android中搜索栏中输入的文本,android,search,android-toolbar,Android,Search,Android Toolbar,我正在尝试为我的android应用程序实现搜索功能。我无法获取在搜索栏中输入的文本。我已经尝试了SO中提到的所有方法。请让我知道我犯了什么错误。我挣扎了很久 我的代码: @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { super.onCreateOptionsMenu(menu, inflater); inflater = getActivity
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater = getActivity().getMenuInflater();
inflater.inflate(R.menu.menu_activity_for_fragments, menu);
SearchManager searchManager = (SearchManager)
getActivity().getSystemService(Context.SEARCH_SERVICE);
searchMenuItem = menu.findItem(R.id.search);
searchView = (SearchView) searchMenuItem.getActionView();
searchView.setSearchableInfo(searchManager.
getSearchableInfo(getActivity().getComponentName()));
enteredText = (String) searchView.getQuery();
Log.d("iFocus", "" + enteredText);
searchView.setSubmitButtonEnabled(true);
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
Log.d("iFocus", ""+searchView.getQuery());
if (0 != searchView.getQuery().length()) {
String spnId = searchView.getQuery().toString();
setSearchResult(spnId);
} else {
setData();
}
return true;
}
@Override
public boolean onQueryTextChange(String newText) {
Log.d("iFocus", ""+newText.toString());
adapter.getFilter().filter(newText);
return true;
}
});
}
欢迎所有建议。提前感谢。为什么不在被重写的方法onquerytext中使用您变成的参数来获得如下查询:
@Override
public boolean onQueryTextSubmit(String query) {
Log.d("iFocus", query);
if (0 != query.length()) {
setSearchResult(query);
} else {
setData();
}
return true;
}
请参阅我的示例项目,其中包含工具栏和搜索菜单项,最小API级别=7:
我也在做同样的事情,searchView.getQuery没有返回我任何东西。嗯,你能调试代码并告诉我在
onQueryTextSubmit
方法中query
参数的值是多少吗?当我调试控件时,它永远不会转到该方法,当我输入文本时,它应该转到该方法,对吗?我认为当你提交搜索查询时(从方法签名来看),它会转到该方法。尝试在查询后点击enter,它应该进入Method。你能告诉我你是如何使用serach_layout.xml的吗??你是在片段中膨胀它吗?不,我不是在代码中膨胀它,这是android:actionLayout属性,这意味着在点击正确的代码时展开布局,再试一次,别忘了调用SetHasOptions菜单(true);在onActivityCreated MethodEdit answer中,请参见示例项目