【发布时间】:2018-04-27 21:23:31
【问题描述】:
当按下 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 手机主屏幕。为什么会这样?
【问题讨论】:
标签: android android-actionbar searchview android-search