我們已經做了功課,讓權重的轉換器在字段更新的同時輸入數字(不需要點擊「計算」或任何東西)。其中一名學生提供了下面的代碼。 該代碼有效:在字段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)和[listeners](https://docs.oracle.com/javase/tutorial/uiswing/events/)。 –
嗯,他爲這兩個edittext創建了一個新的Listener,所以他不必費心編輯文本得到一個事件,因爲這個特定編輯文本的代碼已經在實際的監聽器中了。 –