Qual è il miglioramento di AppCompatActivity su ActionBarActivity?


164

android.support.v7.app.AppCompatActivity ieri è stata aggiunta all'ultima libreria di supporto v7 come nuova funzionalità.

Si dice che ActionBarActivityè stato deprecato a favore del nuovo AppCompatActivitye che AppCompatActivityè la classe base per le attività che utilizzano le funzioni della barra delle azioni della libreria di supporto. Quindi, quali sono le nuove funzionalità di AppCompatActivityover ActionBarActivity? Quali miglioramenti AppCompatActivityhanno superato ActionBarActivity? E quali sono i vantaggi di AppCompatActivity? Qualcuno potrebbe fornire alcuni campioni?

Eventuali suggerimenti sono apprezzati. E grazie in anticipo.

PS: ciò che mi ha sorpreso di più è ciò AppCompatActivityche si estende dalla android.support.v4.app.FragmentActivityclasse genitrice diretta di ActionBarActivity! Voglio dire, ora che ActionBarActivityposso fare tutto ciò che AppCompatActivitypuò fare, perché Android ha eliminato quest'ultimo?

Nel frattempo, ho visto un post sul blog in cui si afferma: " Non è una ridenominazione da ActionBarActivitya AppCompatActivity, la logica interna di AppCompatè disponibile tramiteAppCompatDelegate ", quindi qual è la " logica interna " di AppCompat? Cosa si può AppCompatDelegatefare Qualcuno potrebbe pubblicare alcuni codici su questo?



L'ho letto, è un'introduzione, troppo superficiale.
SilentKnight

1
AppCompatActivity è la classe padre di ActionBarActivity. E per ulteriori idee è necessario esaminare il codice.
Pankaj Kumar,

Sì, l'ho notato.
SilentKnight,

Risposte:


145

Come ha scritto Chris, la nuova versione deprecata di ActionBarActivity(l'unica AppCompatActivityclasse che si estende ) è una classe di compatibilità con le versioni precedenti sicura. La sua deprecazione è solo un suggerimento per te che ti chiede di usare il nuovo AppCompatActivitydirettamente invece. AppCompatActivityè una nuova implementazione più generica che utilizza la AppCompatDelegateclasse internamente.

Se inizi un nuovo sviluppo, allora dovresti piuttosto usare la nuova AppCompatActivityclasse immediatamente. Se hai la possibilità di aggiornare l'app, sostituisci anche quella deprecata ActionBarActivitydalla nuova attività. Altrimenti puoi rimanere con attività deprecate e non ci sarà alcuna differenza nel comportamento.

Per quanto riguarda AppCompatDelegate, ti consente di avere nuovi widget colorati in un'attività, che non è né AppCompatActivityné né ActionBarActivity.

Ad esempio, si eredita un'attività da una libreria esterna, che, a sua volta, non eredita AppCompatActivityma si desidera che questa attività abbia widget di materiali colorati (viste). Per realizzarlo devi creare un'istanza AppCompatDelegateall'interno della tua attività, sovrascrivere metodi di quell'attività come addContentView(), setContentView()ecc. (Vedi AppCompatDelegatejavadoc per l'elenco completo dei metodi) e all'interno di quei metodi sovrascritti inoltrare le chiamate AppCompatDelegateall'istanza interna . AppCompatDelegatefarà il resto e la tua attività "vecchio stile" sarà "materializzata".


Buon esempio .. Grazie @ sergej shafarenka
Rakesh L

2
Potete per favore dirmi che cosa succede quando userò Activity al posto di Appcompactivity? Ho cercato, ma non ha ottenuto l'aiuto che mi solution.Please
Ravindra Kushwaha

35

È soprattutto un cambio di nome: ActionBarActivitynon descrive davvero tutto ciò che fa ora. Puoi tranquillamente usarlo ActionBarActivityse lo desideri. Pensalo come un collegamento simbolico.


AppCompatActivityè la classe genitrice diretta di ActionBarActivity, ora che ActionBarActivitypuò fare tutto ciò che AppCompatActivitypuò fare, perché Androidspinto più tardi?
SilentKnight,

4
@SilentKnight: come ha scritto Chris, è principalmente un cambio di nome. Citando il Blog degli sviluppatori Android : "La libreria di supporto di AppCompat è iniziata con umili, ma importanti inizi: un'unica barra di azione coerente per tutti i dispositivi API 7 e superiori. Nella revisione 21, ha assunto una nuova responsabilità: portare la tavolozza dei colori dei materiali, la colorazione dei widget, Supporto della barra degli strumenti e altro ancora per tutti i dispositivi API 7+. Con ciò, il nome ActionBarActivity non copriva realmente l'intero ambito di ciò che ha realmente fatto. "
CommonsWare,

3
Non è sicuro utilizzare classi deprecate, poiché sono soggette a rimozione nelle versioni future. Sebbene sia possibile sostituire facilmente tutti i riferimenti a ActionBarActivityquando viene rilasciato dalla libreria di supporto (ad esempio quando si aggiorna l'app), si consiglia di evitare di utilizzarlo da ora in poi.
david.schreiber,

12

La libreria di supporto AppCompat è iniziata con umili ma importanti inizi: un'unica barra di azione coerente per tutti i dispositivi API 7 e superiori. Nella revisione 21, ha assunto una nuova responsabilità : portare la tavolozza dei colori dei materiali, la colorazione dei widget, il supporto della barra degli strumenti e altro su tutti i dispositivi API 7+. Con ciò, il nome ActionBarActivity non copriva veramente l'intero ambito di ciò che realmente faceva .

http://android-developers.blogspot.it/2015/04/android-support-library-221.html


..Puoi dirmi che cosa succede quando userò Activity al posto di Appcompactivity? Ho cercato, ma non ha ottenuto l'aiuto che mi solution.Please
Ravindra Kushwaha

9

AppCompatActivityè stato introdotto in Android-SDK dal rilascio della libreria di appcompat di supporto Android .

AppCompatActivityè la classe figlio diretta FragmentActivitydi supporto v4 e la classe madre diretta di ActionBarActivity.

AppCompatActivityè la classe base per le attività che utilizzano le funzioni della barra delle azioni della libreria di supporto .

È possibile aggiungere un elementoActionBar alla propria attività quando si esegue a livello di API 7 o superiore estendendo questa classe per l'attività e impostando il tema dell'attività su Theme.AppCompat o un tema simile.

Per quanto riguarda la libreria di supporto app v7 di supporto, aggiunge il supporto per il modello di progettazione dell'interfaccia utente della barra delle azioni . Questa libreria include il supporto per le implementazioni dell'interfaccia utente di progettazione dei materiali .

Ecco alcune delle classi chiave incluse nella libreria v7 appcompat:

  • ActionBar - Fornisce un'implementazione del modello di interfaccia utente della barra delle azioni.
  • AppCompatActivity- Aggiunge una classe di attività dell'applicazione che può essere utilizzata come classe di base per attività che utilizzano l' implementazione della barra delle azioni della libreria di supporto .
  • AppCompatDialog- Aggiunge una classe di dialogo che può essere utilizzata come classe di base per le finestre di dialogo a tema AppCompat .
  • ShareActionProvider - Aggiunge il supporto per un'azione di condivisione standardizzata (come e-mail o pubblicazione su applicazioni social) che può essere inclusa in una barra delle azioni.

Dopo aver scaricato le librerie di supporto Android , questa libreria si trova nella directory / extras / android / support / v7 / appcompat / .


Che dire android.support.v4.app.ActivityCompat? È solo il vecchio nome di AppCompatActivity?
Taylan,

7

In precedenza, l'unico punto di accesso AppCompatera attraverso la ActionBarActivityclasse ora deprecata . Sfortunatamente questo ti ha costretto ad usare una gerarchia di attività che rendeva PreferenceActivityimpossibile l' uso di cose .

vedi support-libraries-v22-1-0 di chris banes per maggiori informazioni


1
È il blog di Chris, molto apprezzato.
SilentKnight

2

L'ultima versione della libreria di supporto Android, 22.1, depreca il ActionBarActivityfavore AppCompatActivity, il che promette di portare un unico coerente ActionBarper tutti i dispositivi a partire da API Level 7 e versioni successive

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.