programing tip

EditText가 포커스를 잃을 때 어떻게 알 수 있습니까?

itbloger 2020. 6. 14. 11:04
반응형

EditText가 포커스를 잃을 때 어떻게 알 수 있습니까?


EditText초점을 잃을 때 잡을 필요가 있는데 다른 질문을 찾았지만 답을 찾지 못했습니다.

내가 사용 OnFocusChangeListener과 같이

OnFocusChangeListener foco = new OnFocusChangeListener() {

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

    }
};

그러나 그것은 나를 위해 작동하지 않습니다.


구현 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
            }
        }
    });

이 인터페이스를 인수로 사용하려면 Activity구현 하십시오 OnFocusChangeListener().

public class Shops extends AppCompatActivity implements View.OnFocusChangeListener{

당신에 OnCreate당신은 예를 들어 리스너를 추가 할 수 있습니다 :

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

그런 다음 안드로이드 스튜디오는 인터페이스에서 메소드를 추가하라는 메시지를 표시하고 수락합니다 ...

@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것은 초점을 잃은 아이템의 행동을위한 것입니다. 그러나 이러한 상태에서는 포커스 변경으로 인해 사용자의 항목이 덮어 쓰기 될 수 있습니다.


코 틀린 웨이

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

제대로 작동

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

}

Java 8 람다 식 사용 :

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

참고 URL : https://stackoverflow.com/questions/10627137/how-can-i-know-when-an-edittext-loses-focus

반응형