Android - Pasar datos de una activity a otra

   
Vista:

Pasar datos de una activity a otra

Publicado por Jose Luis (1 intervención) el 05/02/2015 20:29:04
Buenas tardes. Estoy programando una app que consta de dos activities. En la principal hay un boton que lanza la segunda activity, y en la segunda un edittext en que introducir datos y un boton que lanza esos datos a la activity principal y los muestra en un Textview. El problema con el que me encuentro es que se genera todo bien, pero al escribir los datos en la segunda activity y pulsar el boton, no se muestra ese dato en la activity principal y no consigo solucionarlo. ¿Alguien sabe como corregirlo? Os dejo el codigo en cuestion.
Xml activity principal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:orientation="vertical"
   android:padding="5dp" >
 
 
    <Button
       android:id="@+id/btn_enviar"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:onClick="onEnviarClick"
       android:text="Provincia/Calculadora/Mail" />
    <TextView
        android:id="@+id/tvDatosRecibidos"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
 
 
</LinearLayout>
Java activity principal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package com.example.pruebas;
 
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.widget.TextView;
 
public class MainActivity extends ActionBarActivity {
	TextView tvDatosRecibidos; //TextView donde se mostrára la cadena recibida
    String cadenaObtenida;//String donde se guardará la cadena recibida
 
 @override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}
	public void onEnviarClick(View view) {
 
 
        Intent intent = new Intent(this, Recibir_datos.class);
 
        startActivity(intent);
 
 
}
 
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
 
		tvDatosRecibidos = (TextView)findViewById(R.id.tvDatosRecibidos);//Instanciamos(Creamos el objeto) tvDatosRecibidos
 
        Bundle recogerDatos = getIntent().getExtras();//Creamos un objeto de tipo Bundle que guardará todos los datos recibidos
        cadenaObtenida = recogerDatos.getString("resultado");//Del Bundle recogerDatos obtenemos la cadena que en la actividad anterior le pusimos de nombre resultado
 
        tvDatosRecibidos.setText(cadenaObtenida);//mostramos la cadena recibida en el TextView
 
 
}
}
Xml activity secundaria
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:orientation="vertical" >
 
    <EditText
       android:id="@+id/etCadena"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_gravity="center_horizontal"
       android:hint="Introduce la Provincia"
       android:textSize="20sp"/>
 
    <Button
       android:id="@+id/miBoton"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_gravity="center_horizontal"
       android:onClick="cambiarActividad"
       android:text="Cerrar" />
 
 
</LinearLayout>
Java activity secundaria
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package com.example.pruebas;
 
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.widget.EditText;
 
public class Recibir_datos extends ActionBarActivity {
	EditText etCadena; //Cuadro de texto donde se inserta la cadéna
    String contenidoCadena;//Aquí guardaremos el contenido del cuadro de texto par
 
 @override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_recibir_datos);
		etCadena = (EditText)findViewById(R.id.etCadena);//Instanciamos etCadena
	}
 
	public void cambiarActividad(View v){
        contenidoCadena = etCadena.getText().toString(); //Obtenemos el contenido del cuadro de texto
 
        Intent i = new Intent(this, MainActivity.class);//Creamos un nuevo intent para llamar a la siguiente actividad
        i.putExtra("resultado", contenidoCadena);//Guardamos el la cadena en el intent y le ponemos de nombre resultado
        startActivity(i);//Ejecutamos la actividad para que muestre la segunda actividad
    }
 
}
Muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Pasar datos de una activity a otra

Publicado por juanki (170 intervenciones) el 06/02/2015 23:07:09
Hola


Si vas a mostrar una activity para solicitar un dato al usuario, ¿Por qué no usas un Dialog? Puedes crearte una interface para devolver los datos que quieras:

https://developer.android.com/guide/topics/ui/dialogs.html

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Pasar datos de una activity a otra

Publicado por MMan (2 intervenciones) el 15/02/2015 21:09:19
hola...
Intent intent = new Intent(this, Recibir_datos.class);

startActivity(intent);


en vez de...
startActivity.... tienes q usar startActivityForResult
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Pasar datos de una activity a otra

Publicado por MMan (2 intervenciones) el 15/02/2015 22:48:19
... y en la segunda actividad.. en vez de devolver con un startactivity....usar setresult
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar