Dobrze. To troszeczkę inaczej. Udało mi się do czegoś dojść. Generalnie problem wynika z różnych stylów formatowania w Androidzie w zależności od języka ustawionego w systemie. Ponieważ na wirtualnej maszynie ustawiony jest angielski to problem w ogóle nie występuje. Inaczej jest w przypadku mojego telefonu.
Mam stworzoną funkcję, która ma za zadanie sformatować zadaną liczbę. Sprowadza się to do czegoś takiego:
Kopiuj
String output = String.format("%.0f", input);
Ponieważ językiem na wirt. maszynie jest angielski, to wszędzie taka operacja wyrzuca ciąg o takim formacie : 12.5. Na telefonie jest to już 12,5. Oczywiście tam gdzie jest to tylko wyświetlenie nie robi to żadnego problemu. Gorzej z edycją. Bo, tak jak już pisałem dochodzi do błędu. EditText jest wypełniany ciągiem znaków sformatowanym przez powyższą funkcję. Skoro jest na telefonie język polski, to wynikiem jest liczba z przecinkiem. Gdy próbuję takie coś zapiać, niestety dochodzi do błędu. Tym samym oznacza to, że system nie przyjmuje liczby w zapisie dziesiętnym w formacie z przecinkiem - jest to zbieżne z inną obserwacją. Otóż przy wpisywaniu liczby do pola tekstowego o zadanych parametrach wejściowych NumberDecimal zablokowany jest klawisz przecinka - działa tylko kropka.
Jak w takim razie to obsłużyć? Skoro system stara się być elastyczny i dobierać formatowanie do ustawionego języka to OK - chciałbym to wykorzystać we właściwy sposób. Moim celem jest to by liczby dało się wpisywać TYLKO przecinkiem - tak przecież tu w Polsce piszemy. Tyle, że przy obecnej konfiguracji jest to nieakceptowane przez aplikację.
Będę wdzięczny za wszelką pomoc. :)
Pozdrawiam
Odczytywanie EditTexta do doublea
Kopiuj
room.setWidth(Double.parseDouble(width.getText().toString()));
room to obiekt, który potem zapisuje w bazie danych. setWidth - standardowy seter.
Potem dodanie do bazy:
Kopiuj
values.put(KEY_WIDTH, room.getWidth());