Android SearchView未调用选项ItemSelected
“错误”很奇怪,其他时候我做过,但从来没有解决过这个问题 如果我将“appname:actionViewClass=“android.support.v7.widget.searchview”放在菜单上,我的searchview不会调用OnOptions ItemSelected 显示Android SearchView未调用选项ItemSelected,android,android-actionbar,searchview,Android,Android Actionbar,Searchview,“错误”很奇怪,其他时候我做过,但从来没有解决过这个问题 如果我将“appname:actionViewClass=“android.support.v7.widget.searchview”放在菜单上,我的searchview不会调用OnOptions ItemSelected 显示 <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="21" /> <activity
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="21" />
<activity
android:name=".DashBoardActivity"
android:label="">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
错误是,没有调用选项项Selected,我需要操作searchview我知道现在已经太晚了,但如果其他人发现它在将来有用,我仍然在写答案。 昨天我遇到了同样的问题,我通过更改菜单xml文件中的以下行来解决它
appname:showAsAction="always"
到
您必须在
appname:showAsAction
中添加collapseActionView
以及always
以启用在searchView上选择的选项项,每当我将collapseActionView添加到菜单项时,操作栏标题在searchView单击时隐藏。这就是为什么我一直在搜索将其保留为
android:showAsAction=“always”
请注意,提交搜索结果时不应使用SearchView.setOnQueryTextFocusChangeListener
应该改用SearchView.setOnQueryTextListener
以下是搜索提交侦听器的示例:
case R.id.action_search:
mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
Toast.makeText(getActivity(),
getString(R.string.abc_searchview_description_submit),
Toast.LENGTH_SHORT)
.show();
updateUI(query);
return true;
}
@Override
public boolean onQueryTextChange(String query) {
// Clear search
if (query.equals("")) {
updateUI(null);
}
return true;
}
});
你没有告诉我们你犯了什么错误…哦,天哪!这为我解决了整个问题!WTF?为什么有效?我尝试了
ifRoom
和始终,但只有始终| collapseActionView
有效。请解释一下?2016年9月,这个问题仍然存在,谢谢你的解决方案!功能我担心答案是,操作不是选项,如果你定义了actionLayout甚至actionViewClass,你会有不同的东西。actionViewClass甚至actionLayout会导致一个可展开的操作,第一次单击总是“展开”,但不是onOptionItemSelected
appname:showAsAction="always"
appname:showAsAction="always|collapseActionView"
case R.id.action_search:
mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
Toast.makeText(getActivity(),
getString(R.string.abc_searchview_description_submit),
Toast.LENGTH_SHORT)
.show();
updateUI(query);
return true;
}
@Override
public boolean onQueryTextChange(String query) {
// Clear search
if (query.equals("")) {
updateUI(null);
}
return true;
}
});