我目前在我的应用中使用ActionBarSherlock 4.2和它的SearchView小部件。SearchView imeOptions和onQueryTextSubmit支持
我想让它提交查询,即使它是空的。我试图设置imeOptions和OnKeyListener,但都没有理由被忽略。
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
Log.d(TAG, "onCreateOptionsMenu");
inflater.inflate(R.menu.interactive_map, menu);
mSearchView = (SearchView) menu.findItem(R.id.action_search).getActionView();
mSearchView.setImeOptions(EditorInfo.IME_ACTION_GO);
mSearchView.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
Log.d(TAG, "keyCode: " + keyCode);
Log.d(TAG, "Action: " + event.getAction());
if(keyCode == EditorInfo.IME_ACTION_SEARCH){
onQueryTextSubmit(""+mSearchView.getQuery());
}
return false;
}
});
super.onCreateOptionsMenu(menu, inflater);
}
由于两个Logcat条目从不出现在Logcat窗口中,因此onKey从不会被触发。不知道SherlockFragment中是否存在这个问题。
对菜单项也没有特别的做法。
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/action_search"
android:title="@string/app_name"
android:icon="@android:drawable/ic_menu_search"
android:showAsAction="always"
android:actionViewClass="com.actionbarsherlock.widget.SearchView" />
</menu>
有没有办法解决这个问题?还是有更简单的方式来使查询为空时提交?它似乎并不支持源代码中的任何配置。
这里是另一种解决方案。使用较少的代码工作。 http://stackoverflow.com/a/32023365/1987045 –