数字を入力するときにフィールドが更新されるウェイトのコンバーターを作成するための宿題があります(「計算する」などは必要ありません)。生徒の一人が以下のコードを提供しました。 コードが動作します。フィールド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/)の公式ドキュメントをご覧ください。リファレンス/アンドロイド/ビュー/ View.OnKeyListener.html)と[リスナー](https://docs.oracle.com/javase/tutorial/uiswing/events/)を参照してください。 –
まあ、彼は両方の編集テキスト用の新しいリスナーを作成するので、この特定の編集テキストのコードがすでに実際のリスナーに入っているため、どの編集テキストにイベントがあるか気にする必要はありません。 –