156

android.support.v7.app.AppCompatActivity è stato aggiunto all'ultima libreria di supporto v7 come nuova funzionalità ieri.Qual è il miglioramento di AppCompatActivity su ActionBarActivity?

Si dice che ActionBarActivity è stato deprecato in favore del nuovo AppCompatActivity e che AppCompatActivity è classe di base per le attività che utilizzano la libreria di supporto caratteristiche barra delle operazioni. Quindi, quali sono le nuove funzionalità di AppCompatActivity su ActionBarActivity? Quali miglioramenti hanno AppCompatActivity oltre ActionBarActivity? E quali sono i vantaggi di AppCompatActivity? Qualcuno potrebbe fornire alcuni campioni?

Qualsiasi consiglio è apprezzato. E grazie in anticipo.

PS: quello che mi ha sorpreso di più è che AppCompatActivity che viene esteso da android.support.v4.app.FragmentActivity è la classe madre diretta di ActionBarActivity! Voglio dire in realtà ora che ActionBarActivity può fare tutto ciò che può fare AppCompatActivity, perché Android ha eliminato quest'ultimo?

Nel frattempo, ho visto un post sul blog che afferma: "Non è una ridenominazione da ActionBarActivity al AppCompatActivity, la logica interna del AppCompat è disponibile via AppCompatDelegate", quindi qual è il "logica interna" di AppCompat? Cosa può fare AppCompatDelegate? Qualcuno potrebbe pubblicare dei codici su questo?

+0

http://android-developers.blogspot.com/2015/04/android-support-library-221.html – CommonsWare

+0

l'ho letto, è un'introduzione, troppo superficiale. – SilentKnight

+1

AppCompatActivity è la classe padre di ActionBarActivity. E per ulteriori idee è necessario esaminare il codice. –

risposta

139

Come Chris ha scritto, nuovo deprecato la versione di ActionBarActivity (quella che estende la classe AppCompatActivity) è una classe di compatibilità con le versioni precedenti sicura. La sua deprecazione è solo un suggerimento per te che chiedi di usare direttamente il nuovo AppCompatActivity. AppCompatActivity è una nuova implementazione più generica che utilizza la classe AppCompatDelegate internamente.

Se si avvia un nuovo sviluppo, è consigliabile utilizzare subito la nuova classe AppCompatActivity. Se hai la possibilità di aggiornare la tua app, allora sostituisci la versione ActionBarActivity deprecata con la nuova attività. Altrimenti puoi rimanere con attività deprecate e non ci sarà alcuna differenza nel comportamento.

Riguardo a AppCompatDelegate, consente di disporre di nuovi widget colorati in un'attività, che non è né AppCompatActivityActionBarActivity.

Per esempio, si ereditano un'attività da una libreria esterna, la quale, a sua volta, fa non ereditano da AppCompatActivity ma si desidera questa attività per avere materiali colorati widget (visualizzazioni). Per realizzarlo devi creare un'istanza di AppCompatDelegate all'interno della tua attività, sovrascrivere i metodi di tale attività come addContentView(), setContentView() ecc. (Vedi l'articolo AppCompatDelegate javadoc per l'elenco completo dei metodi) e all'interno di quei metodi sovrascritti le chiamate verso il interno AppCompatDelegate istanza. AppCompatDelegate farà il resto e la tua attività "vecchia maniera" sarà "materializzata".

+0

Buon esempio .. Grazie @ sergej shafarenka –

+2

Puoi dirmi che cosa succede quando userò Activity al posto di Appcompactivity? Ho cercato ma non ho trovato la soluzione.Si prega di aiutarmi –

7

In precedenza, l'unico punto di ingresso in AppCompat era attraverso la classe ActionBarActivity deprecata. Sfortunatamente questo ti ha costretto a utilizzare una gerarchia di attività impostata che ha reso impossibile l'utilizzo di PreferenceActivity.

vedono di support-libraries-v22-1-0 per ulteriori informazioni

+1

È il blog di Chris, molto apprezzato. – SilentKnight

34

E 'soprattutto un cambio di nome Chris Banes: ActionBarActivity realtà non descrivere tutto ciò che ora fa. Puoi tranquillamente usare ActionBarActivity se lo desideri. Pensalo come un link simbolico.

+0

'AppCompatActivity' è la classe genitore diretto di' ActionBarActivity', ora che ActionBarActivity può fare tutto ciò che 'AppCompatActivity' può fare, perché' Android' ha eliminato il successivo? – SilentKnight

+4

@SilentKnight: come ha scritto Chris, è soprattutto un cambio di nome. Citando [il blog degli sviluppatori Android] (http://android-developers.blogspot.com/2015/04/android-support-library-221.html): "La libreria di supporto AppCompat è iniziata con umili, ma importanti inizi: un singolo Action Bar coerente per tutti i dispositivi API 7 e superiori. Nella revisione 21, ha assunto nuove responsabilità: portando la tavolozza dei colori dei materiali, la colorazione dei widget, il supporto della barra degli strumenti e altro ancora su tutti i dispositivi API 7+. Con ciò, il nome ActionBarActivity non copre davvero la portata di ciò che realmente ha 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 'ActionBarActivity' quando viene rilasciato dalla libreria di supporto (ad esempio quando si aggiorna la tua app), consiglierei di evitare di usarlo d'ora in poi. –

2

L'ultima versione di libreria di supporto Android, 22.1, depreca il ActionBarActivity a favore di AppCompatActivity, che promette di portare un unico coerente ActionBar per tutti i dispositivi che iniziano con API livello 7 e sopra

8

AppCompatActivity è stato introdotto in Android SDK dal rilascio di supporto Android appcompat biblioteca.

AppCompatActivity è la classe figlio diretta di FragmentActivity del supporto v4 e della classe padre diretta di ActionBarActivity.

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

È possibile aggiungere un ActionBar alla vostra attività durante il funzionamento a livello di API 7 o superiore estendendo questa classe per la vostra attività e l'impostazione del tema di attività di Theme.AppCompat o un tema simile.

Per quanto riguarda la libreria di supporto app v7, aggiunge il supporto per il modello di progettazione dell'interfaccia utente Barra delle azioni. Questa libreria include il supporto per le implementazioni dell'interfaccia utente design del materiale.

Ecco alcune delle classi fondamentali inclusi nel v7 appcompat libreria:

  • ActionBar - fornisce un'implementazione della barra delle azioni dell'utente modello di interfaccia.
  • AppCompatActivity - Aggiunge una classe di attività delle applicazioni che può essere utilizzata come classe base per le attività che utilizzano la libreria di supporto barra delle operazioni attuazione.
  • 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 posta elettronica o pubblicazione su applicazioni social) che può essere incluso in una barra delle azioni.

Dopo aver scaricato i Android supporto Biblioteche, questa biblioteca si trova nella cartella/directory//extras/android/supporto v7 appcompat/.

+0

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

11

La libreria di supporto AppCompat ha iniziato con umili, ma importanti inizi: una singola barra di azione coerente per tutti i dispositivi API 7 e superiori.Nella revisione 21, ha assunto nuove responsabilità: portando la tavolozza dei colori dei materiali, la colorazione dei widget, il supporto della barra degli strumenti e altro ancora su tutti i dispositivi API 7+. Con questo, il nome ActionBarActivity non copriva l'ambito completo di ciò che realmente faceva.

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

+0

.. Può dirmi che cosa succede quando userò Activity al posto di Appcompactivity? Ho cercato ma non ho trovato la soluzione.Si prega di aiutarmi –

Problemi correlati