나는 내 app 언어를 종속적으로 만드는 데에 열중하고있다. 사용자가 플로트를 입력해야합니다. EditText를 사용하여 현재 값을 표시하고 편집을 허용합니다. 내가 코딩 준비하려면 : 사용자 언어에 따라 부동 소수점 표현
st = String.format("%.2f", myFloat);
edTxt = (EditText) findViewById(R.id.myEditText);
edTxt.setText(st, TextView.BufferType.EDITABLE);
edTxt.selectAll();
이제 사용자는 값을 표시됩니다. 내 장치의 설정에서 언어를 독일어 (독일어)로 설정 한 경우 부동 소수점 값 2.80은 2,80으로 표시됩니다. 활동의 onPause에서 값을 검색하여 문자열에서 부동으로 변환하고 쉼표 때문에 NumberFormatException 오류가 발생합니다.
String st ="";
st = edTxt.getText().toString();
st.replace(",", ".");
try{
float minV = Float.valueOf(st);
} catch (NumberFormatException nfe){
mShowAToast("NumberFormatException: " + st);
}
과 놀라움을 : 난, 난 그냥 점으로 쉼표를 교체 할 필요가 생각하고 코딩 쉽게해야합니다 응용 프로그램은 캐치로 실행하고 토스트로 "2,80"대신 일을 보여줍니다 "2.80", st.replace는 그 일을하지 않았다. (아마도 그랬지만) 나는 무엇을 감독합니까?
그라시아 에르네스토,이 작품을,하지만 ... 나는 로케일을 많이 가지고해야 할 것 .XXX 문을 사용하여 가능한 모든 로케일을 처리합니다. 문제는 st.replace 선언문에서 무슨 일이 벌어지고 있는가? – Addi
Gracias가 @Ernesto를 다시 편집합니다. 팁 java.util.Locale.getDefault()가 문제를 해결합니다. 그리고 예, replace에 반환 값을 지정하면 작동합니다. 복사 붙여 넣기 오류가 발생하여 지속적으로 간과 해 버렸습니다 .-(대체 주제에 시간을 낭비하게되어 죄송합니다. – Addi