Android, double, zapis do bazy i wypisanie w EditText

0

Cześć,
mam pewien problem z Android Studio. Mam w bazie danych zapisane wartości liczbowe, które są wyciągane z bazy do EditTextu, który umożliwia edycję tych danych.

EditText ma w parametrach zadane NumberDecimal. I teraz tak: na maszynie wirtualnej wszystko gra i żadnych problemów nie ma. Natomiast po wgraniu aplikacji na telefony (API 23 i API 16) pojawia się problem z przecinkami przy wartościach niecałkowitych. Mianowicie, na klawiaturze jest możliwość wpisania nie przecinka, tylko kropki (na maszynie wirtualnej jest tak samo). To jeszcze jest do przeżycia. Gorzej, że na telefonach, gdy wyciągam dane z bazy to pojawiają się one z PRZECINKAMI, a nie z KROPKAMI. Przy próbie zapisania ich do bazy aplikacja się wysypuje. Domyślam się, że coś pokiełbasiłem z typami, z właściwym podejściem do formatowania.. być może w zły sposób użyłem którychś parametrów. Będę wdzięczny za rady :)

Pozdrawiam :)

0

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:

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

room.setWidth(Double.parseDouble(width.getText().toString()));

room to obiekt, który potem zapisuje w bazie danych. setWidth - standardowy seter.

Potem dodanie do bazy:

values.put(KEY_WIDTH, room.getWidth());

1 użytkowników online, w tym zalogowanych: 0, gości: 1