Press "Enter" to skip to content

Więcej tankowań i bugfix

Hmmm… Ciężko zacząć wpis, nie ustalając sobie żadnych celów w poprzednim wpisie 🙂 Co prawda ten tydzień był trochę mniej efektywny niż poprzedni, ale tragedii nie było. Bardziej skupiłem się na poprawieniu błędów, wyciągnięciu tekstów do odpowiedniego pliku wartości, aby nie było nic wpisane „na sztywno” w kodach layoutów.
A teraz do rzeczy!

Nowe funkcjonalności

Nowych funkcjonalności nie ma zbyt wiele. Tak naprawdę udało mi się dodać trzy nowe rzeczy, które nie za wiele wnoszą, ale jednak trochę poprawiają czytelność aplikacji oraz jej używanie. Tymi funkcjonalnościami są:

  • Wyświetlanie szczegółowych informacji na temat tankowań
  • Edycja istniejących informacji o tankowaniu
  • Kasowanie istniejących informacji o tankowaniu

Oczywiście podczas tworzenia tych elementów nie obyło się bez problemów. Pierwszy problem był związany z wyświetlaniem średniego spalania samochodu. O ile na skróconej liście wyświetlała się tylko liczba 0.0, o tyle w aktywności z informacjami szczegółowymi, crashowało to całą aplikację. Dlaczego? O tym niżej.

Szczegółowe informacje o tankowaniu

Tak wiem, można nałożyć jakieś obrazki na przyciski, bo nie wiadomo do czego one służą… Tym się zajmę, podobnie jak oznaczeniem elementów, które zostały zaznaczone (teraz widać tylko „ON” oraz „OFF”, ale wszystko szare i można nie zauważyć z początku 🙂

Naprawa bugów

Oczywiście czymże by było pisanie aplikacji bez bugów? Marzeniem! W rozwijanym projekcie znalazłem kilka „ciekawostek”…
Pierwszymi zauważonymi było:

  • Wyświetlanie średniego spalania
  • Wyświetlanie daty, w której odbyło się tankowanie pojazdu

Co z nimi było/jest nie tak? Informacja o średnim spalaniu zawsze pokazywała zero, nie wiedzieć dlaczego… Data wyświetla się w dosyć dziwny sposób: 0020-11-06 – co ta data oznacza? Obstawiam, że używam złego wzorca podczas parsowania daty w jedną jak i w drugą stronę. To zostało do sprawdzenia i prawdopodobnie zajmę się tym w obecnym tygodniu 🙂

Crashowanie się aplikacji

Podczas próby tworzenia nowej aktywności do wyświetlania szczegółów, występował błąd typu NullPointerException. Długo nie myśląc postawiłem kilka breakpointów i uruchomiłem debugger. Jednak to nie było takie proste. Informacje, które szły do bazy danych były poprawne, odczytywane wartości również, czyli to nie wina bazki. Pierwszy podejrzany niewinny, więc trzeba było szukać dalej. Po około 30 minutach myślenia i sprawdzania co może być nie tak, wpadłem na pomysł, aby postawić breakpointa w klasie pomocniczej do operowania na zastosowanych enumach. Okazało się, że klasa odpowiedzialna za obsługę bazy przekazuje ID 6 klasy obsługującej style jazdy. Pętla przechodzi do końca i wychodzi nic nie zwracając. ID 6 należało do „opisu” opon. Ale jak to? Co się stało?
Wniosek okazał się bardzo prosty. Po znalezieniu potencjalnego błędu przeszedłem do klasy obsługującej bazę danych oraz do klasy opisującej tabele w bazie. Analizując po kolei okazało się, że podczas odczytu z kursora pominąłem element opisujący typ tankowanego paliwa. Po dodaniu tego elementu i zwiększeniu o jeden indeksów dalszych, wszystko wróciło do normy. Aplikacja przestała się crashować!

Wyświetlanie średniego spalania

Problem dotyczący wyświetlania średniego spalania paliwa był powiązany z problemem opisanym powyżej. Do testów nie przejmowałem się jakie paliwo zapisuję, wystarczyła mi informacja o przebytej odległości, ilości zatankowanego paliwa oraz cena, jaką za nie zapłaciliśmy. Może gdybym wybierał różne rodzaje paliwa, szybciej udałoby mi się namierzyć problem, który mnie spotkał. Wyświetlane wcześniej zera wzięły się z błędnego pobierania danych z bazy. Po poprawieniu indeksów, również tutaj błąd zniknął. Udało się upiec dwie pieczenie na jednym ogniu! Nice!

Mały refactoring

Zrobiłem dosłownie mały refactoring. Wyciągnąłem wszystkie wartości tekstowe wpisane na stałe w kodach układów do pliku, który służy do przechowywania tego typu wartości (strings.xml). Przed końcem konkursu chcę jeszcze utworzyć polskie odpowiedniki tych tekstów, aby aplikacja obsługiwała dwa języki – polski dla polskich ustawień w telefonach oraz angielski dla każdego innego ustawienia (jako domyślny język aplikacji). Na chwilę obecną byłby to cały zrobiony refactoring (tak wiem, sporo tego), jednak wolę dodać więcej funkcjonalności do końca trwania konkursu niż zagłębiać się teraz w refactoring oraz część wizualną.

Podsumowanie

Nie udało się za wiele zrobić dostrzegalnych zmian, jednak udało się poprawić kilka błędów, dodać 3 małe funkcjonalności oraz przygotować aplikację do internacjonalizacji. Aktualnie patrzę na mojego wunderlist’a i widzę bogaty plan związany z projektem na ten tydzień:

  • Naprawić problem związany z datami
  • Zacząć implementację modułu przypomnień
  • Zamienić fragmenty używane na starcie aplikacji z menu do wyboru pojazdów na elementy CardView oraz RecycleView
  • Dodać polskie tłumaczenia aplikacji

Niby niewiele w planach do zrobienia, jednak czeka mnie delegacja służbowa, więc i tak sporo jak na tak krótki czas, który posiadam na chwilę obecną. Wpis postaram się wrzucić w normalnym dniu (poniedziałek) prosto z hotelu. Jednak gdyby się to nie udało, to zawsze zostaje wtorek 🙂

Pozdrawiam!