Who/What invoca a FininInflate()? No importa cómo infle mis archivos de diseño (en código) este método nunca parece activarse. ¿Alguien puede darme un ejemplo o decirme cuándo se llama realmente a FininInflate()?onFinishInflate() nunca se llama
Respuesta
View.onFinishInflate()
se llama después de que una vista (y sus elementos secundarios) se inflan desde XML. Específicamente, es durante una llamada al LayoutInflater.inflate(...)
que se llamará onFinishInflate()
. La inflación se realiza recursivamente, comenzando desde la raíz. Una vista que contiene niños puede necesitar saber cuándo sus hijos han terminado de inflarse. Uno de los principales usos de esta devolución de llamada es ViewGroups
para realizar acciones especiales una vez que sus hijos estén listos.
Supongamos que tiene una subclase de View
llamada CustomView
, y que no infle internamente ningún diseño. Si usted tuvo un CustomView
alguna parte en su diseño, es decir:
...
<com.company.CustomView
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
...
Debería ver una devolución de llamada a onFinishInflate()
una vez que ha sido inflado. Si esto está en su diseño principal de su actividad, entonces puede considerar esto después de llamar al Activity.setContentView(int)
. Internamente, esto llamará al LayoutInflater.inflate(...)
.
Como alternativa, si ha creado una instancia de CustomView
con:
...
new CustomView(context);
...
... no obtendrá una llamada a onFinishInflate()
. Hacer una instancia de esta manera significará naturalmente que no tiene hijos y, por lo tanto, no tiene que esperar a que se los instancia de forma recursiva, como en la inflación XML.
- 1. IMetadataAware.OnMetadataCreated nunca se llama
- 2. TaskScheduler.UnobservedTaskException nunca se llama
- 3. Fragment's onSaveInstanceState() nunca se llama
- 4. LayoutInflater y onFinishInflate()
- 5. NSFilePresenter -presentedSubitemDidAppearAtURL: el método nunca se llama
- 6. Android: nunca se llama a onTouch()?
- 7. ¿Por qué paint()/paintComponent() nunca se llama?
- 8. ¿Por qué mi destructor nunca se llama?
- 9. Servicio de intenciones que nunca se llama
- 10. Android onPageScrollStateChanged de ViewPager nunca se llama
- 11. BaseAdapter notifyDatasetChanged() llamado pero getView() nunca se llama
- 12. constructor de copia con parámetros por defecto nunca se llama
- 13. Node.js HTTP: evento 'fin' solicitud nunca se llama
- 14. Process.Exited nunca se llama, aunque EnableRaisingEvents está establecido en verdadero
- 15. QMetaObject :: invokeMethod devuelve verdadero, pero el método nunca se llama
- 16. OnLocationChanged de devolución de llamada nunca se llama
- 17. El oyente de clic de LinearLayout nunca se llama
- 18. - (void) applicationWillResignActive: (UIApplication *) la aplicación nunca se llama
- 19. onLocationChanged() nunca se llamó
- 20. onActivityResult nunca se llamó
- 21. PictureCallback.onPictureTaken nunca se llamó
- 22. Actividad OnDestroy nunca se llamó?
- 23. ¡DateTimePicker nunca se actualiza!
- 24. CLLocationManager nunca llama a los métodos de delegado
- 25. WebMethod no se llama
- 26. El servicio de Android nunca parece comenzar - onStartCommand() no se llama
- 27. Android: problema de la clase AudioRecord: la devolución de llamada nunca se llama
- 28. servidor Websocket: la función onopen en el socket web nunca se llama
- 29. onServiceConnected() no se llama
- 30. Android: onPreviewFrame nunca se llamó sin SurfaceView
Así que los documentos están equivocados. Si infla manualmente un diseño, no se llamará a la devolución de llamada. Pero aún puede invocarlo manualmente para que sea homogéneo. – Snicolas
No puede llamar al método usted mismo. Es un método protegido ... necesitarás una clase protegida. Noté que tenerlo en el paquete 'android.view' no funciona. –
Eso no es cierto, puede llamar 'super.onFinishInflate' o su reemplazado' onFinishInflate' en el constructor. – GLee