¿Cómo paso un valor de una pantalla a su pantalla anterior?
Considere este caso: tengo dos actividades. La primera pantalla tiene uno TextView
y un botón y la segunda actividad tiene uno EditText
y un botón.
Si hago clic en el primer botón, debe pasar a la segunda actividad y aquí el usuario debe escribir algo en el cuadro de texto. Si presiona el botón de la segunda pantalla, los valores del cuadro de texto deben moverse a la primera actividad y eso debe mostrarse en la primera actividad TextView
.
android
android-activity
Kumar
fuente
fuente
Respuestas:
Para capturar las acciones realizadas en una Actividad dentro de otra se requieren tres pasos.
Inicie la actividad secundaria (su actividad 'Editar texto') como una subactividad utilizando
startActivityForResult
desde su actividad principal.Dentro de la subactividad, en lugar de simplemente cerrar la Actividad cuando un usuario hace clic en el botón, debe crear una nueva Intención e incluir el valor de texto ingresado en su paquete de extras. Para devolverlo a la llamada principal
setResult
antes de llamarfinish
para cerrar la actividad secundaria.El último paso es en la Actividad de llamada: Anular
onActivityResult
para escuchar las devoluciones de llamada de la Actividad de entrada de texto. Obtenga el extra del Intent devuelto para obtener el valor de texto que debería mostrar.fuente
new Intent(null);
era "demasiado ambiguo" y tuve que cambiarlo anew Intent();
.Hay un par de formas en las que puede acceder a variables u objetos en otras clases o actividades.
A. Base de datos
B. preferencias compartidas.
C. Serialización de objetos.
D. Una clase que puede contener datos comunes puede denominarse Utilidades comunes, depende de usted.
E. Pasar datos a través de Intents e Interfaz Parcelable.
Depende de las necesidades de su proyecto.
A. Base de datos
SQLite es una base de datos de código abierto que está integrada en Android. SQLite admite funciones estándar de bases de datos relacionales como sintaxis SQL, transacciones y declaraciones preparadas.
Tutoriales: http://www.vogella.com/articles/AndroidSQLite/article.html
B. Preferencias compartidas
Suponga que desea almacenar el nombre de usuario. Así que ahora habrá dos cosas: Nombre de usuario clave , Valor Valor.
Cómo almacenar
Usando putString (), putBoolean (), putInt (), putFloat (), putLong () puede guardar el tipo de datos que desee.
Cómo ir a buscar
http://developer.android.com/reference/android/content/SharedPreferences.html
C. Serialización de objetos
La serlización de objetos se usa si queremos guardar el estado de un objeto para enviarlo a través de la red o también puede usarlo para su propósito.
Use java beans y guárdelos como uno de sus campos y use getters y setter para eso
Los JavaBeans son clases de Java que tienen propiedades. Piense en las propiedades como variables de instancia privadas. Dado que son privados, la única forma en que se puede acceder a ellos desde fuera de su clase es a través de métodos en la clase. Los métodos que cambian el valor de una propiedad se denominan métodos setter y los métodos que recuperan el valor de una propiedad se denominan métodos getter.
Configure la variable en su método de correo usando
Luego use Object Serialzation para serializar este objeto y en su otra clase deserialice este objeto.
En la serialización, un objeto se puede representar como una secuencia de bytes que incluye los datos del objeto, así como información sobre el tipo de objeto y los tipos de datos almacenados en el objeto.
Una vez que un objeto serializado se ha escrito en un archivo, se puede leer del archivo y deserializar, es decir, la información de tipo y los bytes que representan el objeto y sus datos se pueden usar para recrear el objeto en la memoria.
Si desea un tutorial para esto, consulte este enlace.
http://javawithswaranga.blogspot.in/2011/08/serialization-in-java.html
Obtener variable en otras clases
D. Servicios comunes
Puede crear una clase por sí mismo que puede contener datos comunes que necesita con frecuencia en su proyecto.
Muestra
E. Pasar datos a través de Intents
Consulte este tutorial para conocer esta opción de transmisión de datos.
http://shri.blog.kraya.co.uk/2010/04/26/android-parcel-data-to-pass-between-activities-using-parcelable-classes/
fuente
no tienes que ...
Simplemente llame a newIntent () desde la segunda actividad
Agregar datos para devolver
Continúe con setResult
Y luego puede terminar
fuente
startActivityForResult ()
Y aquí hay un enlace del SDK con más información:
http://developer.android.com/guide/appendix/faq/commontasks.html#opennewscreen
y desplácese hacia abajo hasta la parte titulada "Devolver un resultado de una pantalla"
fuente
A menudo uso variables estáticas en la actividad de llamada con métodos de establecimiento estáticos para configurarlas.
De esta manera puedo cambiar los valores en cualquier actividad a voluntad, independientemente del flujo exacto de control entre las diversas actividades.
Tenga en cuenta que este truco solo se puede usar si no le importa la creación de instancias de más de una copia de la misma actividad (clase) en la aplicación, sin embargo, encontré que este es el más fácil de implementar y lo uso más .
fuente
La mejor manera de hacerlo aquí es poner la variable en una clase común que se define fuera del alcance
dentro de su código (por ejemplo, OnButtonClick, etc.)
dentro del código de
@Override public void onActivityResult (int requestCode, int resultCode, Intent data) {if (requestCode == Keys.PICK_CONTACT) {if (resultCode == Activity.RESULT_OK) {Uri contactData = data.getData ();
fuente