我怎么能知道什么时候一个EditText失去焦点?我怎么能知道什么时候一个EditText失去焦点?

2019-05-14 06:36发布

我需要捕捉时EditText失去焦点,我已经搜查等问题,但我没有找到答案。

我用OnFocusChangeListener这样

OnFocusChangeListener foco = new OnFocusChangeListener() {

    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        // TODO Auto-generated method stub

    }
};

但是,它不会为我工作。

Answer 1:

实施onFocusChangesetOnFocusChangeListener而且也为hasFocus一个布尔参数。 如果这是假的,你已经失去焦点到另一个控件。

 EditText txtEdit = (EditText) findViewById(R.id.edittxt);

 txtEdit.setOnFocusChangeListener(new OnFocusChangeListener() {          
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            if (!hasFocus) {
               // code to execute when EditText loses focus
            }
        }
    });


Answer 2:

有你的Activity实施OnFocusChangeListener()如果你想有一个因式分解使用这个接口,例如:

public class Shops extends AppCompatActivity implements View.OnFocusChangeListener{

在你OnCreate您可以添加一个监听器,例如:

editTextResearch.setOnFocusChangeListener(this);
editTextMyWords.setOnFocusChangeListener(this);
editTextPhone.setOnFocusChangeListener(this);

那么Android的工作室会提示你从接口添加方法,接受它...它会像:

@Override
public void onFocusChange(View v, boolean hasFocus) {
// todo your code here...
}

并且你已经有了一个因式分解的代码,你只需要做到这一点:

@Override
public void onFocusChange(View v, boolean hasFocus) {
   if (hasFocus) {
        editTextResearch.setText("");
        editTextMyWords.setText("");
        editTextPhone.setText("");
    }
    if (!hasFocus){
        editTextResearch.setText("BlaBlaBla");
        editTextMyWords.setText(" One Two Tree!");
        editTextPhone.setText("\"your phone here:\"");
    }
}

在任何你的代码!hasFocus是失去焦点的项目的行为,是应该做的伎俩! 但要注意,在这种状态下,重点的变化可能会覆盖用户的输入!



Answer 3:

科特林方式

editText.setOnFocusChangeListener { _, hasFocus ->
    if (!hasFocus) {  }
}


Answer 4:

它工作正常

EditText et_mobile= (EditText) findViewById(R.id.edittxt);

 et_mobile.setOnFocusChangeListener(new OnFocusChangeListener() {          
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            if (hasFocus) {
               // code to execute when EditText loses focus
 if (et_mobile.getText().toString().trim().length() == 0) {
                        CommonMethod.showAlert("Please enter name", FeedbackSubmtActivity.this);
                    }
            }
        }
    });



public static void showAlert(String message, Activity context) {

    final AlertDialog.Builder builder = new AlertDialog.Builder(context);
    builder.setMessage(message).setCancelable(false)
            .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {

                }
            });
    try {
        builder.show();
    } catch (Exception e) {
        e.printStackTrace();
    }

}


Answer 5:

使用Java 8 Lambda表达式:

editText.setOnFocusChangeListener((v, hasFocus) -> {
    if(!hasFocus) {
        String value = String.valueOf( editText.getText() );
    }        
});


文章来源: How can I know when an EditText loses focus?