0
我期待制作將一個單位轉換爲另一個單位(如貨幣)的應用程序。所以它由2個編輯文本組成。一個用戶輸入值,另一個輸入結果。現在,在這裏,我不想使用「轉換」按鈕將值放入第二個編輯文本中,我希望轉換後的值出現在第二個編輯文本中,並將其輸入到第一個值中。我怎樣才能做到這一點? 謝謝Android如何實時更改edittext的內容
我期待制作將一個單位轉換爲另一個單位(如貨幣)的應用程序。所以它由2個編輯文本組成。一個用戶輸入值,另一個輸入結果。現在,在這裏,我不想使用「轉換」按鈕將值放入第二個編輯文本中,我希望轉換後的值出現在第二個編輯文本中,並將其輸入到第一個值中。我怎樣才能做到這一點? 謝謝Android如何實時更改edittext的內容
爲此使用TextWatcher
。設置它的EditText
用戶類型:
myEditText1.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {
String value = s.toString();
// Perform computations using this string
// For example: parse the value to an Integer and use this value
// Set the computed value to the other EditText
myEditText2.setText(computedValue);
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(final CharSequence s, int start, int before, int count) {
}
});
編輯1:
檢查空字符串""
:
myEditText1.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {
String value = s.toString();
if (value.equals("")) {
myEditText1.setText("0");
// You may not need this line, because "myEditText1.setText("0")" will
// trigger this method again and go to else block, where, if your code is set up
// correctly, myEditText2 will get the value 0. So, try without the next line
// and if it doesn't work, put it back.
myEditText2.setText("0");
} else {
// Perform computations using this string
// For example: parse the value to an Integer and use this value
// Set the computed value to the other EditText
myEditText2.setText(computedValue);
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(final CharSequence s, int start, int before, int count){
}
});
是這個工程。但例如我輸入的美元價值被轉換爲盧比爲23.它給出了正確的輸出。然後如果我按後退按鈕將其更改爲首先刪除'3'。然後最後如果我嘗試刪除'2',那麼它崩潰。如果我清空第一個編輯文本,我希望它變爲0美元和0盧比。我怎麼做? –
是的,發生這種情況是因爲'myEditText1'內的文本發生更改時,會觸發'onTextChanged(CharSequence,int,int,int)'。你必須檢查空字符串'「」'。請參閱上面的**編輯1 **。 – Vikram
@ShivamBhalla你可能會得到一個'NumberFormatException'。 **編輯1 **以上應解決您的問題。 – Vikram