숫자를 입력하는 동안 필드가 업데이트되는 가중치 변환기를 만들기 위해 숙제를해야합니다 ('계산'또는 아무 것도 클릭하지 않아도 됨). 학생 중 한 명이 아래 코드를 제공했습니다. 코드가 작동합니다. 입력란 1에 숫자를 입력하면 입력하는 동안 입력란 2가 변경됩니다.setOnKeyListener의 작동 방식
제가 이해하지 못하는 것은 어떻게 작동합니까? onKey
메서드의 값은 View
int
및 keyEvent
으로 지정되지 않으므로 수신 대기자는 어떤보기 키와 어떤 키를 활성화할지 또는 어떤 이벤트를 활성화 할지를 "인식"합니까?
public class Screen extends Activity {
double weight = 2.20462;
EditText kgEdit, lbsEdit;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
kgEdit = (EditText) findViewById(R.id.kgEdit);
lbsEdit = (EditText) findViewById(R.id.lbsEdit);
kgEdit.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
String kg = kgEdit.getText().toString();
if (kg.isEmpty()) {
lbsEdit.setText("");
} else {
double num = Double.valueOf(kgEdit.getText().toString()) * weight;
lbsEdit.setText(num + "");
}
return false;
}
});
lbsEdit.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
String lbs = lbsEdit.getText().toString();
if (lbs.isEmpty()) {
kgEdit.setText("");
} else {
double num = Double.valueOf(lbsEdit.getText().toString())/weight;
kgEdit.setText(num + "");
}
return false;
}
});
}
}
[onKeyListener] (https://developer.android.com/)에 관한 공식 문서를보십시오. reference/android/view/View.OnKeyListener.html) 및 [listers] (https://docs.oracle.com/javase/tutorial/uiswing/events/)를 참조하십시오. –
음, 그는 두 편집 텍스트에 대한 새로운 Listener를 생성하므로 특정 편집 텍스트의 코드가 이미 실제 리스너에 있으므로 어떤 편집 텍스트에 이벤트가 있는지 신경 쓸 필요가 없습니다. –