2012-06-25 14 views
7

Estoy agregando EditTexts creados dinámicamente a un diseño (método de botón OnClick). Cuando giro la pantalla, los textos de edición agregados desaparecen. ¿Cómo puedo agregarlos a un paquete para ponerlos en el método onSavedInstanceState? ¿O hay otra manera de hacer esto? Sé que puedo guardar el texto, pero ¿hay alguna manera de mantener el diseño de la pantalla cuando lo gire? Si el usuario presiona el botón y agrega cinco EditTexts (con o sin escribir nada), necesito guardar este diseño cuando se gira la pantalla (básicamente necesito una prueba a prueba de fallas de mi aplicación :)).Cómo poner una vista en el paquete

¡Gracias de antemano!

+1

¡Creo que lo tengo! Guardaré las cadenas de los edittexts en el paquete y luego llenaré los nuevos edittexts cuando la pantalla gire. Ustedes jared mi memoria. – TheCommander

Respuesta

9

No puede agregar vistas a un paquete porque no son parcelable/serializable. Lo único que puede y debe guardar en el paquete es el estado actual de la actividad.

Puede mantener una estructura de datos de lista o una variable de contador que realiza un seguimiento de las vistas creadas dinámicamente. Guarde también los valores de cadena de EditTexts. En onCreate, debe interpretar esa información para recrear las vistas y sus estados.

+0

¿Cómo crearía la variable de contador? No tengo un oyente onClick; Tengo un método onClick en mi archivo xml. ¿Podría guardar las cadenas en una matriz y luego usar un ciclo for para crear los textos de edición y agregar las cadenas indexando a través de los elementos de la matriz? – TheCommander

+0

Dado que Google recomienda el uso de compresión y ofuscación de código a través de ProGuard, no debe definir manejadores de eventos en XML (a menos que proteja los nombres de los métodos en el archivo de configuración de ProGuard). Establezca/cree los controladores de eventos onClick en su código. No sé exactamente cómo estás creando estos EditTexts. Si no tienen aplicado un posicionamiento elegante, entonces solo necesita guardar sus valores de texto e iterar sobre esa lista de matriz de cadenas desde el paquete savedInstanceState en onCreate para poder volver a crear estos EditTexts. – tiguchi

0

Las vistas en sí no representan la información que debe guardar. En su lugar, debe guardar sus coordenadas, ancho, alto, valor, etc.

1

no puede guardar una vista. paquete es solo un par nombre-valor. por supuesto, puedes guardar el texto y luego renderizarlo nuevamente. el camino es solo tu dijiste

onsaveInsatnceState (ahorro de paquete) guarde el texto como save.putString ('text1', 'bla bla'), por supuesto, necesita un bucle para guardar todo su texto de edición.

después en oncreated (paquete de guardar)

usted puede conseguir lo que haya añadido por save.getString ('texto1')

+0

Sé que puedo guardar el texto, pero ¿hay alguna manera de mantener el diseño de la pantalla cuando lo gire? Si el usuario presiona el botón y agrega cinco EditTexts (con o sin escribir nada), necesito guardar este diseño cuando se gira la pantalla (básicamente necesito una prueba a prueba de fallas de mi aplicación :)). Lo siento si lo que quería no es claro; ¡Gracias! – TheCommander

+1

no se preocupe. pero desafortunadamente no puede guardar vistas, puede guardar el número de editText y el texto y volver a componer el diseño usando esta información. Creo que es la única solución. – Xenione

0

Puede guardar los datos de su vista en una clase o en una lista de arrays. cuando la actividad de su fragmento se reiniciará en vez de recuperar datos desde el estado de la instancia de guardar en la función oncreate.

Utilice esta función setRetainInstance (true). después de usar la función cosa, tu actividad de fragmento no destruirá.

Cuestiones relacionadas