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.
W większości urządzeń z Androidem (telefony, tablety) mamy dostępny przycisk menu. Warto byłoby oprogramować to co się dzieje po jego wciśnięciu. Możemy tam wstawić np. opcję wejścia w ustawienia programu, informacje o autorze, albo pomoc. Jeśli przyjrzymy się domyślnie automatycznie tworzonej klasie głównej aktywności, zobaczymy że zawiera ona metodę onCreateOptionsMenu:
W niej wskazywany jest plik zawierający opis zawartości menu. Powyższy (domyślny) wpis wskazuje na plik main.xml znajdujący się w katalogu menu będącym podkatalogiem katalogu res:
Możemy go przerobić pod własne potrzeby, lub stworzyć nowy i przerobić metodę onCreateOptionsMenu tak by wskazywała nowo stworzony. Domyślnie jego zawartość wygląda tak:
Mamy jedną opcję w menu, z napisem określonym w pliku strings.xml znajdującym się w katalogu res --> values pod nazwą „action_settings”. Przyglądamy się mu:
Dalej modyfikuję zawartość pliku main.xml wg własnych potrzeb:
Każdy element <item> to kolejna opcja w menu. Zrobiłem trzy elementy z napisami wpradzonymi bezpośrednio w tym pliku, a jeden z napisem pobieranym z pliku strings.xml Napis na opcji okresla parametr android:title. Parametr android:orderInCategory określa kolejność wyświetlania w menu od góry. Opcja android:id to identyfikator danej opcji w menu. Musimy zadbać o to by były one różne dla każdego elementu menu, inaczej nie będziemy później w stanie odróżnić która opcja została wybrana. Na ten moment menu po uruchomieniu wygląda tak:
Jeśli tak wolisz, nie musisz definiować zawartości menu w pliku XML. Możesz to zrobić bezpośrednio w kodzie Javy:
Metoda add dla obiektu klasy Menu (czyli naszego menu) wywoływana tutaj ma 4 parametry. Według kolejności: Numer grupy, numer elementu, kolejnośc wyświetlania, napis. Kod w działaniu:
Wracam jednak do starej metody z plikiem XML. Teraz dodamy obsługę kliknięcia. Dorzucam metodę onOptionsItemSelected która jest automatycznie wywoływana za każdym razem gdy użytkownik kliknie w menu. Przez parametr tej metody przekazywany jest obiekt elementu menu który został kliknięty. Mogę pobrać jego identyfikator, jednak nie będzie to identyfikator typu „opcja1” , „opcja2” czyli takie jak zdefiniowałem w pliku main.xml, a identyfikator liczbowy, który dopiero mogę porównać z identyfikatorami liczbowymi moich opcji menu. Tak to niestety trzeba na około robić:
gdzie to sie wyświetla że, kliknęliśmy?
OdpowiedzUsuń[Ravano Beginner said,] Window > Show View > Other > Android > LogCat, możesz wyfiltrować np. po słowie "Opcja"
Usuńale można to sobie po prostu wrzucać do TextView i nie szukać w logu :)
UsuńW LogCat
OdpowiedzUsuńHmm czemu mi na formatce nie wyświetla menu? trzeba nia niej umieścic jakiś komponent?
OdpowiedzUsuńCo uzyskałeś dając 2 razy "orderoncategory=120" ? przypadkiem tak zostawiłeś i ostatni element miał mieć 130 ? czy jak dał bym każdemu order 100 to by wyszło tak samo jak bym dał 100 - 110 - 120-130 ?
OdpowiedzUsuńpojawia mi się błąd przzy kompilacji "log cannot be resolved onOptionsItemSelected(MenuItem)" jak to naprawiC?
OdpowiedzUsuńKliknij SHIFT + CTRL + O żeby zaimportować biblioteki
UsuńBardzo fajny kurs, moje gratulacje.
OdpowiedzUsuńNiestety jest kilka błędów, np. w tej lekcji jest za dużo o jeden nawias klamrowy (zamykający w linii 38). To w sumie nic wielkiego ale potrafi trochę podnieść ciśnienie
pozdrawiam
Czy jest możliwość obsłużyć opcje kliku w opcje menu dodając w atrybutach item :
OdpowiedzUsuńAndroid:onClik ?
Próbowałem, ale mi to nie przechodzi.
52 year old Software Engineer I Hermina Cater, hailing from Manitou enjoys watching movies like Joe Strummer: The Future Is Unwritten and Rugby. Took a trip to Historic City of Meknes and drives a Corvette. Zobacz wiecej informacji
OdpowiedzUsuńUmiejętność dostosowania systemu do swojego trybu pracy jest w stanie przynieść wiele pozytywnych korzyści.
OdpowiedzUsuńWpis zawiera bardzo ciekawe informacje
OdpowiedzUsuńAutomatyka przemysłowa pełni w obecnych czasach bardzo ważną funkcję. Właśnie dlatego, oferta przygotowana przez https://gigaom.pl/ powinna was zainteresować równie mocno, jak mnie.
OdpowiedzUsuńNiezwykle pouczający jest ten wpis. Bardzo mi się podoba.
OdpowiedzUsuńW tym wpisie znajduje się wiele ważnych i ciekawych informacji.
OdpowiedzUsuń