处理EditText焦点的事件

时间:2011-09-13 05:51:06

标签: android events networking

任何人都可以向我推荐任何与EditText焦点相关的事件吗? 我的应用程序包含EditText,其中包含一个URL。

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

如果我使用Json Parsing得到回复,那么它会更方便。

4 个答案:

答案 0 :(得分:480)

这是焦点听众的例子。

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();
        }
    }
});

答案 1 :(得分:10)

  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();
                    }
    
                }
            });
    
  3. 工作正常。

答案 2 :(得分:3)

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

 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();

            }
        }
    });

答案 3 :(得分:0)

在科特林时,它会像这样:

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