下面的代碼會產生一個stackoverflow錯誤。這個想法是在用戶輸入金額時或之後格式化金額。EditText沒有符號的CurrencyFormat Android
500 - > 500.00
1000 - > 1 000.00
29999.55-> 29 999.55
.. .. ..
edit_amount.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
if (edit_amount.getText().toString().length()>0){
edit_amount.setText(
currencyFormat(edit_amount.getText().toString()));
}else {}
}
});
public String currencyFormat(String number){
String credits="";
try {
//en, us
if (TextUtils.isEmpty(MyApplication.pref.GetPreferences("AppCurrency"))){
credits = NumberFormat.getCurrencyInstance(new Locale("fr", "FR")).format(Double.valueOf(number));
}else {
if (MyApplication.pref.GetPreferences("AppCurrency").equals("Euro")) {
credits = NumberFormat.getCurrencyInstance(new Locale("fr", "FR")).format(Double.valueOf(number));
} else {
credits = NumberFormat.getCurrencyInstance(new Locale("en", "US")).format(Double.valueOf(number));
}
}
}catch(Exception ex){
credits = "mCredits";
}
return credits;
}
錯誤信息java.lang.NumberFormatException:無效的雙: 「000€8」 – Dimitri
的原因是,認爲 「」 是不是有效的兩倍。您需要先測試字符串或者發現異常 – KishuDroid
如果此答案可以幫助您或解決您的問題,那麼請接受它作爲答案並加註。 – KishuDroid