Przechodzę przez kilka samouczków programowania dla Androida i zauważam, że niektóre klasy rozszerzają Aktywność, a inne rozszerzają ListActivity na przykład.
Czy domyślnie nowo utworzona klasa domyślnie rozszerza działanie, czy też trzeba je jawnie rozszerzyć?
Ponadto, kiedy klasa rozszerza ListActivity, dlaczego nie musisz przedłużać działania? A może ListActivity już rozszerza działanie?
Przeczytałem kilka podobnych pytań, ale nie było to całkiem jasne.
Odpowiedzi:
2 dla odpowiedzi № 1„Domyślnie” wszystkie działania Androida są przedłużane Activity
.
Czy domyślnie nowo utworzona klasa domyślnie rozszerza działanie, czy też trzeba je jawnie rozszerzyć?
Musisz wyraźnie stwierdzić, że powinien on zostać przedłużony Activity
jeśli jeszcze nie i jeśli planujesz go użyćjako działanie. Uprzejmie pamiętaj, że zdarzają się sytuacje, w których byś tego nie robił. Na przykład, jeśli masz klasę dla swoich przedmiotów lub coś w tym rodzaju, nie musisz już przedłużać Aktywności.
Ponadto, kiedy klasa rozszerza ListActivity, dlaczego nie musisz przedłużać działania? A może ListActivity już rozszerza działanie?
ListActivity
, AppCompatActivity
oraz każdą inną klasę, która kończy się na -Activity
są „dziećmi Activity
klasa. Tak więc, rozszerzenie przez te „dzieci” już rozciągałoby się od rodzica Activity
klasy i nie będziesz już musiał robić czegoś takiego YourActivity extends ListActivity, Activity
. Myślę, że Android Studio wyświetli błąd, jeśli to zrobisz.
Różnica między Activity
i a ListAcivity
jest to, że ListActivity będzie wymagać zastąpienia kilku metod, ponieważ oczekuje ListView w swojej zawartości.
2 dla odpowiedzi nr 2
Android jest napisany w Javie i jak wszystkie klasy java, każda klasa dziedziczy po Object
klasa.
Czy nowo utworzona klasa domyślnie rozszerza działanie, czy też musisz je jawnie rozszerzyć?
Musisz go przedłużyć.
Czy ListActivity już rozszerza działanie?
Tak.
Możesz zobaczyć hierarchię klas dla ListActivity tutaj.
1 dla odpowiedzi nr 3
Nowo utworzone klasy niczego nie rozszerzają. ListActivity jest podklasą działania, więc cała funkcjonalność, jaką posiada, ListActivity dziedziczy. w dokumentacja dla ListActivity widać, że jest to podklasa działania.
1 dla odpowiedzi nr 4
W Androidzie wszystkie klasy nie są rozszerzane przez działanie.
Tylko ekrany wyświetlające interfejs użytkownika są rozszerzane przez działanie. Jeśli więc chcesz utworzyć ekran interfejsu użytkownika, musisz jawnie rozszerzyć go o klasę Activity i zastąpić metody wywołania zwrotnego.
ListActivity jest podklasą działania, która jest używana tylko wtedy, gdy w twoim układzie jest tylko ListView. Ma kilka specyficznych metod związanych z widokiem listy.
Podobnie, jeśli chcesz utworzyć fragment, twoja klasa rozszerzy klasę fragmentów i zastąpi jej metody. Podobnie w przypadku usługi, odbiornika itp.