Cómo pasar los valores de una actividad a la actividad anterior

¿Cómo paso un valor de una pantalla a su pantalla anterior?

Considere este caso: tengo dos actividades. La primera pantalla tiene un TextView y un botón y la segunda actividad tiene un EditText y un botón.

Si hago clic en el primer botón, entonces tiene que pasar a la segunda actividad y aquí el usuario tiene que escribir algo en el cuadro de texto. Si presiona el botón de la segunda pantalla, los valores del cuadro de texto se moverán a la primera actividad y se mostrarán en la primera actividad, TextView .

Para capturar 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.

 Intent i = new Intent(this,TextEntryActivity.class); startActivityForResult(i, STATIC_INTEGER_VALUE); 

Dentro de la subactividad, en lugar de simplemente cerrar la Actividad cuando un usuario hace clic en el botón, debe crear un nuevo Intento e incluir el valor de texto ingresado en su paquete de extras. Para devolverlo a la llamada principal setResult antes de llamar finish para cerrar la actividad secundaria.

 Intent resultIntent = new Intent(); resultIntent.putExtra(PUBLIC_STATIC_STRING_IDENTIFIER, enteredTextValue); setResult(Activity.RESULT_OK, resultIntent); finish(); 

El último paso es en la Actividad de llamada: Anular el onActivityResult para escuchar las devoluciones de llamada de la actividad de entrada de texto. Obtenga el extra del Intento devuelto para obtener el valor de texto que debería mostrar.

 @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch(requestCode) { case (STATIC_INTEGER_VALUE) : { if (resultCode == Activity.RESULT_OK) { String newText = data.getStringExtra(PUBLIC_STATIC_STRING_IDENTIFIER); // TODO Update your TextView. } break; } } } 

Hay dos maneras en 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 se puede nombrar como Utilidades comunes, depende de usted.

E. Pasar datos a través de Intentos e Interfaz Parcelable.

Depende de las necesidades de tu proyecto.

A. Base de datos

SQLite es una base de datos de código abierto que está integrada en Android. SQLite admite características de bases de datos relacionales estándar como syntax SQL, transacciones y declaraciones preparadas.

Tutoriales – http://www.vogella.com/articles/AndroidSQLite/article.html

B. Preferencias compartidas

Supongamos que desea almacenar el nombre de usuario. Así que ahora habrá dos cosas, un Nombre de usuario clave , Valor Valor.

Cómo almacenar

  // Create object of SharedPreferences. SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this); //now get Editor SharedPreferences.Editor editor = sharedPref.edit(); //put your value editor.putString("userName", "stackoverlow"); //commits your edits editor.commit(); 

Usando putString (), putBoolean (), putInt (), putFloat (), putLong () puede guardar su tipo de dta deseado.

Cómo buscar

 SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this); String userName = sharedPref.getString("userName", "Not Available"); 

http://developer.android.com/reference/android/content/SharedPreferences.html

C. Serialización de objetos

La serlización de objetos se usa si queremos guardar un estado de objeto para enviarlo a través de la red o también puede usarlo para su propósito.

Use beans Java y almacénelo 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 desde fuera de su clase es a través de los métodos en la clase. Los métodos que cambian el valor de una propiedad se llaman métodos setter, y los métodos que recuperan el valor de una propiedad se llaman métodos getter.

 public class VariableStorage implements Serializable { private String inString ; public String getInString() { return inString; } public void setInString(String inString) { this.inString = inString; } } 

Establezca la variable en su método de correo utilizando

 VariableStorage variableStorage = new VariableStorage(); variableStorage.setInString(inString); 

Luego usa object Serialzation para serializar este objeto y en tu otra clase deserializar 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 del objeto y los tipos de datos almacenados en el objeto.

Después de escribir un objeto serializado 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 quieres un tutorial para esto, consulta este enlace

http://javawithswaranga.blogspot.in/2011/08/serialization-in-java.html

Obtener variable en otras clases

D. CommonUtilities

Puede crear una clase por su cuenta que pueda contener datos comunes que frecuentemente necesita en su proyecto.

Muestra

 public class CommonUtilities { public static String className = "CommonUtilities"; } 

E. Pasar datos a través de Intenciones

Por favor refiérase a este tutorial para esta opción de pasar datos.

http://shri.blog.kraya.co.uk/2010/04/26/android-parcel-data-to-pass-between-activities-using-plotble-classes/

no tienes que …

simplemente llame a newIntenet () desde la segunda actividad

 Intent retData=new Intent(); 

Agrega datos para volver atrás

 putExtras (retData.putExtra("userName", getUsrName())); 

seguir adelante con setResult

 setResult(RESULT_OK, retData); 

y puede terminar

 finish(); 

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 a la parte titulada “Devolución de un resultado de una pantalla”

A menudo uso variables estáticas en la actividad de llamada con métodos setter estáticos para establecerlos.

De esta forma 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 utilizar si no le importa la instanciación de más de una copia de la misma actividad (clase) en la aplicación, pero encontré que es la más fácil de implementar y la uso más .

La mejor manera de hacerlo aquí es poner variable a una clase común que se define fuera del scope

 public class Utils { public static String mPosition; } 

dentro de su código (por ejemplo, OnButtonClick, etc …)

 Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); Utils.mPosition = mViewData.mPosition + ""; LogHelper.e(TAG, "before intent: " + Utils.mPosition); startActivityForResult(intent, Keys.PICK_CONTACT); 

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 ();

  //you may use the variable here after intent result LogHelper.e(TAG, "after intent: " + Utils.mPosition); ....