¿Cómo enviar cadenas de una actividad a otra?

Así que tengo una cadena en activity2

String message = String.format( "Current Location \n Longitude: %1$s \n Latitude: %2$s", lat, lng); 

Quiero insertar esta cadena en el campo de texto en activity1. ¿Cómo puedo hacer eso? Gracias de antemano.

Puede usar intents, que son mensajes enviados entre actividades. En un bash puedes poner todo tipo de datos, String, int, etc.

En su caso, en activity2 , antes de ir a activity1 , almacenará un mensaje String de esta manera:

 Intent intent = new Intent(activity2.this, activity1.class); intent.putExtra("message", message); startActivity(intent); 

En activity1 , en onCreate() , puede obtener el mensaje de String recuperando un Bundle (que contiene todos los mensajes enviados por la actividad de llamada) y llamar a getString() en él:

 Bundle bundle = getIntent().getExtras(); String message = bundle.getString("message"); 

Luego puede establecer el texto en TextView :

 TextView txtView = (TextView) findViewById(R.id.your_resource_textview); txtView.setText(message); 

Espero que esto ayude !

Puede enviar datos de una actvidad a otra con un Intent

 Intent sendStuff = new Intent(this, TargetActivity.class); sendStuff.putExtra(key, stringvalue); startActivity(sendStuff); 

Luego puede recuperar esta información en la segunda actividad obteniendo el bash y extrayendo la cadena adicional. Haz esto en tu método onCreate() .

 Intent startingIntent = getIntent(); String whatYouSent = startingIntent.getStringExtra(key, value); 

Entonces, todo lo que tienes que hacer es llamar a setText en tu TextView y usar esa cadena.

Diga que hay EditText et1 en su MainActivity y quiere pasar esto a SecondActivity

 String s=et1.getText().toString(); Bundle basket= new Bundle(); basket.putString("abc", s); Intent a=new Intent(MainActivity.this,SecondActivity.class); a.putExtras(basket); startActivity(a); 

ahora en la segunda actividad, digamos que quieres poner la cadena pasada de EditText et1 a TextView txt1 de SecondActivity

 Bundle gt=getIntent().getExtras(); str=gt.getString("abc"); txt1.setText(str); 
  Intent intent = new Intent(activity1.this, activity2.class); intent.putExtra("message", message); startActivity(intent); 

En activity2, en onCreate (), puede obtener el mensaje de cadena recuperando un paquete (que contiene todos los mensajes enviados por la actividad de llamada) y llamar a getString () en él:

  Bundle bundle = getIntent().getExtras(); String message = bundle.getString("message"); 

DOS CASOS

Hay dos situaciones posibles cuando hablamos de pasar datos entre actividades.

Digamos que hay dos actividades A y B y hay un String X. y usted está en la Actividad A.

Ahora dos casos

1) A-> B
2) A <-B

CASO 1): String X está en A y quieres obtenerlo en la Actividad B.

Es muy sencillo.

En la actividad A.

1) Crear intención
2) Poner valor extra
3) startActivity

 Intent i = new Intent(A.this, B.class); i.putExtra("Your_KEY",X); startActivity(i) 

En la actividad B

En el método onCreate, recupera la cadena X usando la clave que usaste mientras almacenabas X (Your_KEY).

 Intent i = getIntent(); String s = i.getStringExtra("Your_KEY"); 

Caso 2)
Este caso es un poco complicado si eres nuevo en el desarrollo de Android.
Debido a que usted está en la actividad A, se mueve a la Actividad B, recoge la cadena, vuelve a la Actividad A y recupera la Cadena o los datos recostackdos. Veamos cómo enfrentar esta situación.

En la actividad A
1) Crear intención
2) iniciar actividad con un código de solicitud.

 Intent i = new Intent(A.this, B.class); startActivityForResult(i,your_req_code); 

En la actividad B
1) Ponga la cuerda X en la intención
2) Establecer el resultado
3) Terminar la actividad

 Intent returnIntent = new Intent(); returnIntent .putString("KEY",X); setResult(resCode,returnIntent); // you could set Activity.RESULT_OK or your rescode too finish() 

De nuevo en la Actividad A
1) Anular el método de prueba de actividad

 onActicvityResult(int req_code, int res_code, Intent data) { if(req_code==your_req_code) { String X = data.getStringExtra("KEY") } } 

Mayor comprensión del caso 2

Puede que se pregunte qué es reqCode, resCode en startActivityForResult(int reqCode, resCode, Intent data)

reqCode es útil cuando tiene que identificar de qué actividad obtiene el resultado.

Digamos que tiene dos botones, un botón inicia la Cámara (hace clic en una foto y obtiene el bitmap de esa imagen en su Actividad como resultado), otro botón inicia GoogleMap (como resultado, recupera las coordenadas actuales de su ubicación). Entonces, para distinguir entre los resultados de ambas actividades, inicie CameraActivty y MapActivity con diferentes códigos de solicitud.

resCode : es útil cuando tiene que distinguir entre cómo los resultados vuelven a solicitar actividad.

Por ejemplo: inicia la actividad de la cámara. Cuando se inicia la actividad de la cámara, puede tomar una foto o simplemente volver a solicitar actividad sin tomar una foto con el botón Atrás. Por lo tanto, en estas dos situaciones, la actividad de su cámara envía el resultado con diferentes resCode ACTIVITY.RESULT_OK y ACTIVITY.RESULT_CANCEL, respectivamente.

Enlaces relevantes

Obtenga más información sobre cómo obtener resultados

Los bashs son intensos .

Las intenciones son útiles para pasar datos en el marco de android. Puede comunicarse con sus propias Activities e incluso con otros procesos. Consulte la guía del desarrollador y si tiene preguntas específicas (es mucho para digerir por adelantado) regrese.

Puede usar GNLauncher, que es parte de una biblioteca de utilidades que escribí en casos donde se requiere mucha interacción con la actividad. Con la biblioteca, es casi tan simple como llamar a una función en el objeto Activity con los parámetros requeridos. https://github.com/noxiouswinter/gnlib_android/wiki#gnlauncher

Para insertar el texto de actividad2 a actividad1 , primero necesita crear una función de visita en actividad2 .

 public void visitactivity1() { Intent i = new Intent(this, activity1.class); i.putExtra("key", message); startActivity(i); } 

Después de crear esta función, debe llamarla desde su función onCreate () de activity2 :

 visitactivity1(); 

A continuación, vaya al archivo Java activity1 . En su función onCreate () , cree un objeto Bundle , busque el mensaje anterior a través de su clave a través de este objeto y guárdelo en un String.

  Bundle b = getIntent().getExtras(); String message = b.getString("key", ""); // the blank String in the second parameter is the default value of this variable. In case the value from previous activity fails to be obtained, the app won't crash: instead, it'll go with the default value of an empty string 

Ahora ponga este elemento en un TextView o EditText, o cualquier elemento de diseño que prefiera usando la función setText () .