处理EditText焦点的事件


145

有人可以建议我发生与焦点有关的任何事件EditText吗?我的应用程序包含一个EditText,其中接受一个URL。

现在我的问题是,在用户将在字段中输入URL并继续移动之后,没有任何click事件,即,当焦点将从移到时EditText,它将检测到输入的网址并转到服务器。

如果我使用Json解析得到答复,那么它将更加方便。

Answers:


519

这是焦点侦听器示例。

editText.setOnFocusChangeListener(new OnFocusChangeListener() {
    @Override
    public void onFocusChange(View view, boolean hasFocus) {
        if (hasFocus) {
            Toast.makeText(getApplicationContext(), "Got the focus", Toast.LENGTH_LONG).show();
        } else {
            Toast.makeText(getApplicationContext(), "Lost the focus", Toast.LENGTH_LONG).show();
        }
    }
});

在焦点更改监听器中的片段中,我无法更新我的UI,有什么想法吗?
moDev

2
这是行不通的。如果在某些设备上通过“输入”隐藏了键盘或隐藏了键盘按钮,则不会触发“失去焦点”。如果您再次关注编辑文本,它也不会归档“获得焦点”。
SnowWolf's

1
请注意,如果在显示软键盘时将布局设置为调整大小,或者使用TextWatcher进行了一些与ui相关的操作,则监听器可能会被调用很多,甚至每个键入的字符都会被调用两次!stackoverflow.com/questions/14727248/…–
M_M

12
  1. 在类顶部声明EditText对象:

     EditText myEditText;
  2. 在onCreate函数和EditText的setOnFocusChangeListener中找到EditText:

    myEditText = findViewById(R.id.yourEditTextNameInxml); 
    
    myEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
                @Override
                public void onFocusChange(View view, boolean hasFocus) {
                    if (!hasFocus) {
                         Toast.makeText(this, "Focus Lose", Toast.LENGTH_SHORT).show();
                    }else{
                        Toast.makeText(this, "Get Focus", Toast.LENGTH_SHORT).show();
                    }
    
                }
            });

工作正常。


11

当在科特林时,它将看起来像这样:

editText.setOnFocusChangeListener { view, hasFocus ->
        if (hasFocus) toast("focused") else toast("focuse lose")
    }

4

对于我们上述有效解决方案无效的人,这里还有另一种解决方法

 searchView.setOnQueryTextFocusChangeListener(new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(View view, boolean isFocused) {
            if(!isFocused)
            {
                Toast.makeText(MainActivity.this,"not focused",Toast.LENGTH_SHORT).show();

            }
        }
    });

这行得通,但我不明白以上解决方案对我没有用
shruti iyyer
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.