当焦点移出TextEdit框时,我想消失键盘。我已经彻底搜索了stackoverflow和google的答案,并尝试了我所看到的每个响应/文章,但似乎没有任何用处。
与许多人一样,我对Android开发非常陌生。我必须忽略一些小细节,但无济于事。
我当前的实现(再次,我已经尝试了许多解决方案)如下:
我的类(class)实现了OnFocusChangeListener
。调用super和OnCreate
后,我执行setContentView
:
EditText editText = (EditText) findViewById(R.id.text_box);<br> editText.setOnFocusChangeListener(this);
和
@Override
public void onFocusChange(View v, boolean hasFocus) { Log.d(TAG, "--> onFocusChange"); }
但是我从来没有看到该日志消息。
有时我认为onFocusChange不是我认为的那样。我的想法是,当我们触摸textedit字段时,此 View 将获得焦点,而当您触摸屏幕的任何其他区域时,请说一个按钮/列表框等,textedit失去焦点,应调用onFocusChange,但不是,我从没看到日志条目。
阐明我正在使用Android Studio并创建使用 fragment 的应用程序也许很有用。
因此,我在“详细信息 Activity ”上执行此操作,该 Activity 又是 fragment 的一部分。我也曾尝试在 fragment 的onActivityCreated上执行此操作。
两种方法都不适合我。
有什么想法我在这里可能会错过吗?
非常感谢您的评论。
最佳答案
edittext.requestFocus();
或者
尝试以下操作:
EditText editText = (EditText) findViewById(R.id.text_box);
editText.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus)
{
if (hasFocus == true){
edittext.requestFocus();
}
else{
InputMethodManager imm = (InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0);
}
}
});
关于android - onFocusChange对我不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25051685/