按下BACK时需要代码关闭searchView。到目前为止,只有按下BACK时关闭键盘的代码。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (item.getItemId() == android.R.id.home) {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
View view = this.getCurrentFocus();
if (view != null) {
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
}
return super.onOptionsItemSelected(item);
}
我尝试了以下这一行,但是这一行因为某种原因关闭了整个应用程序"返回"点击......
onBackPressed();
以下行已弃用...
MenuItemCompat.collapseActionView(menuItem);
我已经在stackOverflow上看到了一些答案,但其中大多数都与onBackPressed()
或添加searchView.collapseActionView()
有关。
但是我无法在onOptionsItemSelected(MenuItem item)
中添加searchView,除非我使用SearchView searchView = (SearchView) item.getActionView();
重新声明它,然后添加searchView.collapseActionView()
但是当按下BACK时应用程序崩溃。
我关闭了键盘,但如何关闭onOptionsItemSelected(MenuItem item)
中的searchView?
修改
当我使用onBackPressed()
或super.onBackPressed()
或this.onBackPressed()
时,我第一次点击"返回"按钮,searchView和键盘关闭,但当我再次点击搜索图标打开searchView和键盘弹出时,如果我点击"返回"再次,整个应用程序关闭,而不是崩溃,只是关闭并带我到Android Phone主屏幕。为什么会这样?
答案 0 :(得分:0)
<强>更新强>
@Override
public void onBackPressed() {
if (!yourSearhView.isIconified()) {
yourSearhView.onActionViewCollapsed();
} else {
super.onBackPressed();
}
}
如果您已设置app:showAsAction =“always”
,则无效