poniedziałek, 10 lutego 2014

Korzystanie z komponentów wizualnych w kodzie




Kod źródłowy do tej lekcji znajduje się tutaj. Rozpakuj go i zaimportuj. W katalogu z kodem źródłowym znajdą się podkatalogi oznaczone numerami. Są to po prostu kolejne wersje kodu, tworzonego w ramach przykładów. Możesz analizować kolejne kroki tworzenia aplikacji, lub od razu zabrać się za kod z katalogu o najwyższym numerku.


Umieszczanie komponentów na ekranach aplikacji odbywa się najczęściej poprzez ich przeciągnięcie na ekran (co tak naprawdę generuje kod XML w pliku layoutu) lub ręczne definiowanie ich w pliku layoutu. Poza tym, że figurują jako obiekty XML, nie ma do nich żadnego dowiązania w kodzie aktywności. Jeśli zechcemy w jakiś sposób z tych komponentów korzystać, musimy w klasie aktywności podpiąć do nich referencje.
Zaczynamy od przyklejenia na ekran jakichś przykładowych komponentów:


 
Gdy zajrzymy do pliku layoutu, zobaczymy że zostało wygenerowane trochę dodatkowego kodu związanego z tymi nowymi komponentami:


Przejdźmy teraz do kodu aktywności. Aby korzystać z przyklejonych komponentów, musimy przede wszystkim posiadać obiekty klas których są komponenty. Definiuję je więc w liniach 12 i 13. Mógłbym to zrobić równie dobrze w metodzie onCreate (wywoływanej przy uruchamianiu aktywności), ale taka globalna deklaracja sprawi, że będę miał do tych obiektów dostęp również w innych metodach. W liniach 19 i 20 podpinam do tych obiektów referencję do komponentów. Służy do tego metoda findViewById. Jako jej parametr podaję wskaźnik do zdefiniowanego komponentu. Zauważ że każdy kompontent określony w pliku layoutu ma parametr android:id. To właśnie on jednoznacznie identyfikuje dany komponent. Nasz guzik na ten przykład ma identyfikator „button1”. Chcąc więc podpiąć referencję do tego obiektu piszę w parametrze metody findViewById „R.id.” i po tym podaję identyfikator komponentu o który mi chodzi. Od tego momentu mogę ustawić czy czytać parametry podpiętych już komponentów wizualnych.




Po uruchomieniu wygląda to tak:



17 komentarzy:

  1. Przy definiowaniu komponentów w 12 i 13 linijce wywala mi błąd: "Button/TextView cannot be resolved to a type". Co robię źle?

    OdpowiedzUsuń
    Odpowiedzi
    1. W momencie najechania w Eclipsie na błąd powinna wyświetlić się lista problemów. Z podanych możliwości wybierz import 'TextView/Button'.

      Usuń
    2. Lub użyj skrótu klawiaturoweg Shift + Ctrl + O, który spowoduje automatyczne importowanie wymaganych... klas? W sumie to nie do końca wiem czego, ale zaimportuje ;)

      Usuń
    3. ok, dziękuję za rady :)

      Usuń
  2. Aplikacja wyłącza się: wyskakuje error:
    "FATAL EXCEPTION:main"

    OdpowiedzUsuń
  3. Ja miałem problem gdy dodałem Button do res/layout/fragment_main.xml - aplikacja zatrzymana na urządzeniu
    Zrobiłem projekt od nowa i gdy dodałem button do res/layout/activity_main.xml działa

    OdpowiedzUsuń
  4. Ludzkim głosem?
    Ten "poradnik" to jakaś kpina, nawet nie napisał pan w jakim pliku mamy dodać kod aktywności.
    Kpina nie poradnik.

    OdpowiedzUsuń
    Odpowiedzi
    1. napisz lepszy pajacu a nie narzekaj. kup sobie ksiazke i sie ucz jak nie pasuje.

      Usuń
  5. Sam jesteś kpina jak takich rzeczy nie wiesz. Taka metoda jest tylko jedna w całym projekcie, trzeba było ja odszukac .

    OdpowiedzUsuń
  6. Korzystam z Android Studio i nie mogę znaleźć automatycznego importu potrzebnych klas. Może ktoś pomóc ??

    OdpowiedzUsuń
  7. 50 yrs old Physical Therapy Assistant Adella Brumhead, hailing from Sault Ste. Marie enjoys watching movies like Analyze This and Vacation. Took a trip to Laurisilva of Madeira and drives a 3500. strona domowa

    OdpowiedzUsuń
  8. Ten wpis jest bardzo interesujący

    OdpowiedzUsuń