niedziela, maja 16, 2010

Programowanie jako sztuka oszukiwania ;-)

Programowanie to jednak sztuka oszukiwania ;-)Bawię się programowaniem Androida i próbuję w ramach tej zabawy napisać sobie widget do ekranu domowego, który będzie liczył biorytm [nie, nie wierzę w biorytmy, to bzdury, ale jak już kiedyś pisałem nadają się na widget bo są osobiste ;-)].Dziś dodałem mojemu widgetowi aktywność konfiguracyjną. I niby wszystko fajnie, ale miałem problem polegający na tym, że sam widget odrysowywał się wcześniej niż miałem dostęp do daty urodzenia podanej w aktywności...... to by się dało rozwiązać gdybym umiał z aktywności polecić widgetowi ponowne odrysowanie się, ale jak na razie to mi się nie udało. Dlatego w końcu poszedłem po rozum do głowy i zacząłem oszukiwać ;-)Zawartość metody updateBioWidget(Context, AppWidgetManager, int) odpowiedzialną za updatowanie wartości poszczególnych elementów widgetu wyrzuciłem do oddzielnej metody statycznej, która dostaje Context (czyli tak plus/minus informację o aplikacji), AppWidgetManager (czyli menadżera widgetów dzięki któremu można operować na samym widgetcie) i identyfikator widgetu (bo możemy mieć kilka takich samych widgetów, a nas interesuje dokładnie jeden) i wołam tą metodę w trakcie planowanych updatów, ale również w momencie gdy użytkownik kliknie Save w mojej aktywności konfiguracyjnej :-)Nie mogłem zmusić widgetu do odrysowania się, to po prostu odrysowuję go "na siłę", a żeby nie dublować kodu całą niecną działalność związaną z rysowaniem widgetu wyrzuciłem do metody statycznej :-)Sama aktywność konfiguracyjna wygląda tak:A widget nie poraża pięknością ;-)Ale w końcu działa mniej więcej tak jak chciałem ;-) Czyli mogę mieć kilka widgetów, z których każdy może pokazywać biorytm dla różnych dat urodzenia :-)


Podobne postybeta
Robimy widget do Windows 7 :-)
Wiedza magiczna
O tym w czym iOS jest lepszy od Androida
Głupi HTTPS...
Clock JB+, czyli zegar z Jelly Bean 4.2 dla starszych Androidów