상의 글고 치기 위해 OnFocusChangeListener을 원샷 내 EditText
에 대한 OnFocusChangeListener
한 샷. 즉, EditText
이 포커스를 받으면 포커스 무언가를하고 초점 변경 이벤트를 듣지 않습니다. 나는 구현할 필요가 안드로이드
EditText
에 ananymous
OnFocusChangeListener
을 할당합니다. 그런 다음
void onFocusChange(View v, boolean hasFocus)
에서 나는
v.setOnFocusChangeListener(null);
그것은 작동을 부르지 만, 그것의 자신의 방법 onFocusChange
에 OnFocusChangeListener
을 null로 가능한 이유 궁금하다. Java 메모리 모델에서 뭔가 빠졌다고 생각합니다.
코드
은 다음과 같습니다 :mEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
// do something
v.setOnFocusChangeListener(null);
}
}
});
, 당신이 루프에서 발생하지 않습니다 어떻게 생각 ... 나는 다소 잘 설명 바랍니다. 'EditText'는'OnFocusChangeListener' 인터페이스를 구현합니다. 먼저 listener를 설정 한 다음 해당 listener를 제거합니다. 왜 문제가 있을까요? 내가 https://developer.android.com/reference/android/widget/EditText.html에서 보는 바와 같이 – azizbekian
@azizbekian,'EditText'는'OnFocusChangeListener' –
내 잘못을 구현하지 않습니다. 그 Listener를 유지하는'ListenerInfo'라는 정적 내부 클래스가'View'에 있습니다. [소스 코드] (https://github.com/android/platform_frameworks_base/blob/master/core/java/android/view/View.java#L3566) – azizbekian