Dopo aver aggiornato l'SDK al livello API 23, ho riscontrato che lo onAttach (Activity activity)
è obsoleto e il nuovo metodo è onAttach (Context context)
. qualcuno può illuminarmi sul perché questo cambiamento è stato fatto?Perché onAttach (Attività dell'attività) è deprecato?
risposta
Penso che sia stato fondamentalmente quello di espandere l'ambito del metodo, ma il changelog ufficiale non dice nulla a riguardo.
Come si può vedere nel registro modifiche, è stato rimosso lo void onAttach(Activity)
ma ne è stato aggiunto uno nuovo con lo stesso nome e si dice che sia obsoleto nello .
Come richq commentato, lo support version of Fragment sconsiglia anche su Attacco (Attività) e ha un onAttach (Contesto) che può essere utilizzato invece su tutte le versioni di Android direttamente su quelle preistoriche.
Per adattarsi a questa nuova modifiche che è possibile seguire questa procedura:
Cambiare il tipo di argomento di callback onAttach
Activity
-Context
. Per ragioni sconosciute, questa modifica comporta il fatto che il metodoonAttach(Context)
non viene più chiamato durante il ciclo di vita del frammento.Spostare il codice nel metodo
onAttach
suonCreate
dal momento che viene ancora eseguito.
Con questa modifica, l'applicazione gira per funzionare come prima. Non sono richieste ulteriori istruzioni di importazione.
Fino a quando questo cambiamento non si è verificato, un frammento potrebbe essere associato a un'attività. Dopo questo cambiamento, Google può lavorare anche per collegare i frammenti ai Servizi. Qualcosa di simile a come funzionano le chat di Facebook, potrebbero anche avere frammenti che fluttuano al di fuori di un'attività.
- 1. Perché TabActivity è deprecato (motivo)?
- 2. Perché isJavaLetterOrDigit è deprecato?
- 3. Perché context2d.backingStorePixelRatio è deprecato?
- 4. perché absolutelayout è deprecato?
- 5. Perché/Wp64 è deprecato?
- 6. Perché GenFsm è deprecato?
- 7. Perché body.scrollTop è deprecato?
- 8. Perché auto_ptr è deprecato?
- 9. Perché buildSessionFactory() è deprecato?
- 10. Perché TabListener è stato deprecato?
- 11. Perché è (javax.servlet.) SingleThreadModel deprecato?
- 12. Perché InsertHelper è stato deprecato?
- 13. Perché Object.observe() è stato deprecato
- 14. Perché Date.getTimezoneOffset è stato deprecato?
- 15. onAttach callback dal frammento all'attività
- 16. Perché std :: function :: argument_type è stato deprecato?
- 17. Perché il modulo InstanceMethods è stato deprecato?
- 18. Perché il modulo Rails Inflector è deprecato?
- 19. Perché auto_link è stato deprecato in Rails?
- 20. Perché Files.deleteDirectoryContents() è deprecato in Guava?
- 21. Perché saveOrUpdateAll è deprecato in primavera HibernateOperations
- 22. ActivityGroup è deprecato
- 23. android.support.v7.app.ActionBarActivity è deprecato
- 24. Hibernate è deprecato?
- 25. Android: showAsAction è deprecato?
- 26. PostMethod setRequestBody (String) deprecato - perché?
- 27. dismissmodalviewcontrolleranimated è deprecato prima deprecato in ios 6
- 28. 'sharedDispatcher' è deprecato
- 29. UITextAttributeTextShadowOffset è deprecato
- 30. auto_ptr è deprecato?
La [versione di supporto di Fragment] (https://developer.android.com/reference/android/support/v4/app/Fragment.html#onAttach%28android.content.Context%29) sconsiglia anche suAttach (Attività) e ha un onAttach (Contesto) che può essere utilizzato su tutte le versioni Android direttamente su quelle preistoriche. – richq
Modifica la risposta con il tuo commento perché l'ho trovato molto utile. – arodriguezdonaire
"Cambia il tipo di argomento del callback' onAttach' da 'Activity' a' Context'. Per ragioni sconosciute, questa modifica comporta il fatto che il metodo 'onAttach (Context)' non viene più chiamato durante il ciclo di vita del frammento. " Questo mi confonde - intendevi dire "' onAttach (Activity) 'non viene più chiamato durante il ciclo di vita dei frammenti"? – stkent