android.support.v7.app.AppCompatActivity
został wczoraj dodany do najnowszej biblioteki obsługi wersji 7 jako nowa funkcja.
Mówi się, że ActionBarActivity
została wycofana na korzyść nowej AppCompatActivity
i AppCompatActivity
jest to klasa bazowa dla działań korzystających z funkcji paska akcji biblioteki obsługi. Więc jakie są nowe funkcje AppCompatActivity
Over ActionBarActivity
? Jakie ulepszenia AppCompatActivity
już się skończyły ActionBarActivity
? A jakie są zalety AppCompatActivity
? Czy ktoś mógłby dostarczyć kilka próbek?
Wszelkie wskazówki są mile widziane. Z góry dziękuję.
PS: to, co mnie najbardziej zaskoczyło, to to, AppCompatActivity
co się rozszerzyło, android.support.v4.app.FragmentActivity
to bezpośrednia klasa macierzysta ActionBarActivity
! Mam na myśli to, że teraz, który ActionBarActivity
może zrobić wszystko, co AppCompatActivity
może, dlaczego Android wypchnął to drugie?
W międzyczasie zobaczyłem post na blogu, w którym napisano: „ To nie jest zmiana nazwy z ActionBarActivity
na AppCompatActivity
, wewnętrzna logika AppCompat
jest dostępna za pośrednictwemAppCompatDelegate
”, więc jaka jest „ wewnętrzna logika ” AppCompat
? Co mogę AppCompatDelegate
zrobić? Czy ktoś mógłby opublikować jakieś kody na ten temat?
Odpowiedzi:
Jak napisał Chris, nowa przestarzała wersja
ActionBarActivity
(ta, która rozszerzyłaAppCompatActivity
klasę) jest bezpieczną w użyciu klasą kompatybilności wstecznej. Jego wycofanie jest tylko wskazówką, żeAppCompatActivity
zamiast tego możesz bezpośrednio użyć nowego .AppCompatActivity
jest nową, bardziej ogólną implementacją, która używaAppCompatDelegate
klasy wewnętrznie.Jeśli zaczynasz nowy rozwój, powinieneś raczej
AppCompatActivity
od razu użyć nowej klasy. Jeśli masz szansę zaktualizować aplikację, zastąpActionBarActivity
ją również nową aktywnością. W przeciwnym razie możesz pozostać przy przestarzałej aktywności i nie będzie żadnej różnicy w zachowaniu.Odnośnie
AppCompatDelegate
, pozwala ci mieć nowe przyciemniane widżety w działaniu, które nie jestAppCompatActivity
aniActionBarActivity
.Na przykład, dziedziczysz działanie z biblioteki zewnętrznej, która z kolei nie dziedziczy,
AppCompatActivity
ale chcesz, aby to działanie miało widżety (widoki) materiałów przyciemnionych. Aby tak się stało trzeba utworzyć instancjęAppCompatDelegate
wewnątrz swojej działalności, metod nadpisywania takiej działalności jakaddContentView()
,setContentView()
itp (patrzAppCompatDelegate
javadoc dla pełnego wykazu metod), a wewnątrz tych przesłoniętych metody przekazania połączenia do wewnętrznejAppCompatDelegate
instancji.AppCompatDelegate
zajmie się resztą, a Twoja „staromodna” działalność zostanie „zmaterializowana”.źródło
To głównie zmiana nazwy:
ActionBarActivity
tak naprawdę nie opisuje wszystkiego, co teraz robi. Możesz bezpiecznie używać,ActionBarActivity
jeśli chcesz. Pomyśl o tym jak o dowiązaniu symbolicznym.źródło
AppCompatActivity
to jest bezpośrednia klasa rodzicielskaActionBarActivity
, która terazActionBarActivity
może zrobić wszystko, coAppCompatActivity
może, dlaczegoAndroid
wypchnięto później?ActionBarActivity
momentu, w którym zostanie usunięty z biblioteki pomocy technicznej (np. Podczas aktualizacji aplikacji), od tej pory zalecamy unikanie korzystania z niego.http://android-developers.blogspot.it/2015/04/android-support-library-221.html
źródło
AppCompatActivity
został wprowadzony do Android-SDK od czasu wydania biblioteki appcompat obsługującej Androida .AppCompatActivity
jest bezpośrednią klasąFragmentActivity
potomną wsparcia v4 i bezpośrednią klasą nadrzędnąActionBarActivity
.AppCompatActivity
jest klasą bazową dla działań korzystających z paska akcji biblioteki obsługi funkcji .Możesz dodać an
ActionBar
do swojego działania, gdy działa na poziomie API 7 lub wyższym , rozszerzając tę klasę dla swojego działania i ustawiając motyw działania na Theme.AppCompat lub podobny motyw.Jeśli chodzi o obsługę biblioteki appcompat w wersji 7, dodaje ona obsługę wzorca projektowania interfejsu użytkownika paska akcji . Ta biblioteka zawiera obsługę projektowania materiałów implementacji interfejsu użytkownika .
Oto kilka kluczowych klas zawartych w bibliotece appcompat w wersji 7:
ActionBar
- Zapewnia implementację wzorca interfejsu użytkownika paska akcji.AppCompatActivity
- Dodaje klasę działania aplikacji, która może być używana jako klasa bazowa dla działań korzystających z implementacji paska akcji Support Library .AppCompatDialog
- Dodaje klasę okna dialogowego, która może być używana jako klasa bazowa dla okien dialogowych o tematyce AppCompat .ShareActionProvider
- Dodaje obsługę znormalizowanej akcji udostępniania (takiej jak e-mail lub publikowanie w aplikacjach społecznościowych), którą można uwzględnić na pasku akcji.Po pobraniu bibliotek obsługi systemu Android biblioteka ta znajduje się w katalogu / extras / android / support / v7 / appcompat / .
źródło
android.support.v4.app.ActivityCompat
? Czy to tylko stara nazwaAppCompatActivity
?Wcześniej jedynym punktem wejścia do programu
AppCompat
była przestarzałaActionBarActivity
klasa. Niestety to zmusiło cię do korzystania z ustalonej hierarchii działań, co uniemożliwiało takie rzeczy jak używaniePreferenceActivity
.zobacz Chris Banes męska support-biblioteki-v22-1-0 aby uzyskać więcej informacji
źródło
Najnowsza wersja biblioteki obsługi Androida, 22.1, wycofuje się
ActionBarActivity
na korzyśćAppCompatActivity
, co obiecuje zapewnić jednolity spójnyActionBar
dla wszystkich urządzeń począwszy od poziomu API 7 i nowszychźródło