Zastanawiam się jak najlepiej podejść do problemu wyświetlania komunikatów o błędach na androidzie.
Przejdę od razu do przykładu.
Powiedzmy, że piszę sobie klienta GG na androida. Kiedy wystąpi błąd z połączeniem chciałbym wyświetlić odpowiednie okienko, np. wywołując funkcję myActivity.showError();
Projekt ma prostą strukturę: obiekt myActivity typu Activity posiada obiekt typu GGService (udostępniający funkcje do wysyłania wiadomości itd.), który z kolei posiada obiekt typu GGConnection (połączenie).
Pytanie jest proste i brzmi: jaki jest najlepszy sposób na przekazanie błędu z klasy GGConnection do Activity (w celu wyświetlenia komunikatu użytkownikowi)?
Mi nasunęły się 2 rozwiązania:
1. Rzucam wyjątek w GGConnection, nie łapię go w GGService i leci sobie aż do Activity, gdzie łapię go i wyświetlam błąd.
2. Trzymam referencję do Activity w klasie GGConnection.
Niestety oba rozwiązania są co najmniej nieładne:
1. W podanym przykładzie może jeszcze ujdzie, ale w bardziej skomplikowanym systemie taki wyjątek musiałby przelecieć przez kilka lub wiecej obiektów - raczej bez sensu.
2. Rozwiązanie prostsze niż to pierwsze, ale jakoś wydaje mi się niepoprawne, żeby taka "niskopoziomowa" klasa trzymała referencję od Activity.
Zapewne istnieje jakaś reguła OOP, która w tym przypadku zostałaby naruszona.
Mam nadzieję, że jasno pokazałem o co mi chodzi.
Dzięki za pomoc!