¿Alguien me puede ayudar a saber sobre el Bundle savedInstanceState
en onCreate(Bundle savedInstanceState)
Soy novato en Android. Intento entenderlo desde developer.android.com. Pero no soy capaz de entender ¿Alguien puede simplificarlo?Qué hay onCreate (Bundle savedInstanceState)
Respuesta
Si guarda el estado de la aplicación en un paquete (por lo general, datos dinámicos no persistentes en onSaveInstanceState
), se puede volver a pasar al onCreate
si es necesario recrear la actividad (por ejemplo, cambio de orientación) para que no pierdas esta información previa. Si no se suministraron datos, savedInstanceState
es nulo.
... que debe utilizar el método onPause() para escribir los datos persistentes (como ediciones de usuario) para el almacenamiento. Además, el método onSaveInstanceState (paquete) se llama antes de realizar la actividad en tal estado fondo, lo que permite guardar la basura cualquier estado instancia dinámica en su actividad en el dado Bundle, para ser más tarde recibidos en onCreate (Bundle) si la actividad necesita ser recreada. Consulte la sección Ciclo de vida del proceso para obtener más información sobre cómo el ciclo de vida de un proceso está vinculado a las actividades que está organizando. Tenga en cuenta que es importante guardar datos persistentes en onPause() en lugar de onSaveInstanceState (Bundle) porque este último no es parte de las devoluciones de llamadas del ciclo de vida , por lo que no se invocará en cada situación como descrito en su documentación.
¿otras actividades comparten el mismo paquete?, Si comienzo otra actividad, ¿pasa el paquete de la primera? –
onCreate(Bundle savedInstanceState)
obtendrá la hipótesis nula cuando la actividad Bundle
get se inicia por primera vez y se pondrá en uso cuando la actividad de orientación se ve modificado .......
http://www.gitshah.com/2011/03/how-to-handle-screen-orientation_28.html
Android proporciona otra manera elegante de logrando esto Para lograr esto, tenemos que anular un método llamado onSaveInstanceState()
. La plataforma Android permite a los usuarios guardar cualquier estado de instancia. El estado de la instancia se puede guardar en el paquete. El paquete se pasa como argumento al método onSaveInstanceState.
podemos cargar el estado de la instancia guardada del paquete pasado como argumento al método onCreate
. También podemos cargar el estado de la instancia guardada en el método onRestoreInstanceState
. Pero dejaré eso para que los lectores lo descubran.
'savedInstanceState' no será' 'null' si' onSavedInstanceState() 'se llamó anteriormente. los cambios de orientación son solo un ejemplo en el que esto podría ocurrir. –
@AlexLockwood, estoy tratando de pensar en todas las situaciones donde esto podría ocurrir. ¿Hay alguna documentación? Una instancia en la que puedo pensar es si el usuario cambia aplicaciones y regresa, pero la actividad se destruyó para recuperar recursos. En este caso, android volverá a crear la actividad con un paquete si onSaveInsanceState() fue anulado, ¿verdad? – batbrat
@batbrat Sí ... el comentario que hice (hace casi dos años) no es del todo correcto. Supongo que la mejor manera de decirlo es que el argumento 'Bundle' para' onCreate (Bundle) 'no será' 'null' si y solo si el' Activity' tenía su método 'onSaveInstanceState' previamente llamado. Esto ocurre durante los cambios de orientación ... y también sucede cuando la actividad vuelve después de que el SO la mata y cuando activa cualquier otra configuración cambia de interés en su dispositivo. –
onCreate(Bundle)
se llama cuando la actividad se inicia por primera vez. Puede usarlo para realizar una inicialización única, como crear la interfaz de usuario. onCreate()
toma un parámetro que es nulo o alguna información de estado previamente guardada por onSaveInstanceState
.
onCreate (Bundle savedInstanceState) se llama y savedInstanceState no será nulo si su actividad y se terminó en un escenario (vista visual) descrito anteriormente. Su aplicación puede tomar (capturar) los datos de savedInstanceState y regenerar su actividad
Como respondió Dhruv Gairola, puede guardar el estado de la aplicación utilizando Bundle savedInstanceState. Estoy tratando de dar un ejemplo muy simple que nuevos alumnos como yo puedan entender fácilmente.
Supongamos que tiene un fragmento simple con una Vista de texto y un Botón.Cada vez que hace clic en el botón, el texto cambia. Ahora, cambie la orientación de su dispositivo/emulador y observe que perdió los datos (significa los datos modificados después de hacer clic en obtener) y el fragmento comienza como la primera vez. Al usar Bundle savedInstanceState, podemos deshacernos de esto. Si echas un vistazo al ciclo de vida del fragmento. Fragment Lifecylce obtendrá que se llama a un método "onSaveInstanceState" cuando el fragmento está a punto de destruirse.
Por lo tanto, podemos guardar el estado significa que el valor de texto cambiado en ese paquete como este
int counter = 0;
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("value",counter);
}
Después de realizar la orientación del método "onCreate" se llamará la derecha? por lo que sólo podemos hacer esto
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(savedInstanceState == null){
//it is the first time the fragment is being called
counter = 0;
}else{
//not the first time so we will check SavedInstanceState bundle
counter = savedInstanceState.getInt("value",0); //here zero is the default value
}
}
Ahora, usted no perderá su valor después de la orientación. El valor modificado siempre se mostrará.
Tenga en cuenta que esto también es válido para la Actividad. ¿Puedes explicar más sobre la diferencia de (paquete de actividades) y el paquete de fragmentos? – laalaguer
Puede obtener una comprensión clara de los ciclos de vida de actividad y fragmento donde una actividad puede mostrar múltiples fragmentos a la vez. Por lo tanto, la diferencia básica es que puede querer guardar algunos valores para todos los fragmentos de una actividad, entonces usted usará el paquete de actividad; de lo contrario, debería usar el paquete de fragmento si es para un fragmento específico. – Asad
onCreate (Bundle savedInstanceState) Función de Android:
1) Cuando se puso en marcha una primera llamada Actividad o después onCreate (Bundle savedInstanceState) método es responsable de crear la actividad.
2) Cuando se cambia la orientación (es decir, de horizontal a vertical o vertical a horizontal) de actividad o cuando una actividad se termina forzosamente por un sistema operativo, savedstatestate, es decir, objeto de clase de paquete guardará el estado de una actividad.
3) Después de cambiar la Orientación, onCreate (Bundle savedInstanceState) llamará y volverá a crear la actividad y cargará todos los datos de savedInstanceState.
4) Básicamente la clase Bundle se usa para almacenar los datos de actividad siempre que ocurra una condición anterior en la aplicación.
5) onCreate() no es necesario para las aplicaciones. Pero la razón por la que se usa en la aplicación es porque ese es el mejor lugar para colocar el código de inicialización.
6) También puede poner su código de inicialización en Inicio() o en Reanudar() y cuando su aplicación se cargue primero, funcionará igual que en onCreate().
- 1. ¿Por qué el objeto Bundle siempre es nulo en onCreate()?
- 2. public onCreate(), o protected onCreate()?
- 3. Android: ¿Cómo ignorar o desactivar savedInstanceState?
- 4. Android - openOptionsMenu no funciona en onCreate
- 5. ¿Cuándo se usa realmente el paquete savedInstanceState?
- 6. cierre de una actividad en onCreate
- 7. ¿Puedo usar setContentView fuera del método oncreate?
- 8. Métodos de actividad: onCreate() y onDestroy()
- 9. acceso Fragmento Vista desde onCreate de Actividad
- 10. savedInstanceState al restaurar el fragmento de la pila posterior
- 11. onCreate no llamado
- 12. iniciar una nueva actividad en onCreate funciona solo con retraso
- 13. Android, ¿Cómo llamar a onCreate() explícitamente desde otro método?
- 14. Android onCreate onResume
- 15. onCreate of Content Provider
- 16. ¿Cómo se maneja savedInstanceState cuando se usa ViewPager?
- 17. Pantallas negras sólidas al llamar a Diálogos en onCreate()
- 18. TextMate Haskell Bundle
- 19. plist bundle version values
- 20. excepción de puntero nulo cuando se utiliza Bundle pasar datos
- 21. Android - Activity Constructor vs onCreate
- 22. ¿Imprime OSGI bundle classpath?
- 23. OnCreate() vs OnStart()
- 24. CheckedTextView establecido en activado oncreate en listview?
- 25. Cómo cancelar o cerrar un cuadro de diálogo personalizado en su método onCreate?
- 26. consigo ActivityInfo metadatos en el método onCreate
- 27. BlackBerry: Localization, Resource Bundle
- 28. Android HashMap en Bundle?
- 29. Bundle install mess
- 30. Resource Bundle Spring
Este es un buen video: https://www.youtube.com/watch?v=kkYIMZw9gzQ –