![]() |
|
Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android |
«
Tema Anterior
|
Siguiente tema
»
|
Herramientas |
#1
|
||||
|
||||
Pasar datos de una activity a otra
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 Código:
<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> Código:
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 } } Código:
<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> Código:
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 } } ![]() ![]() |
|
#2
|
||||
|
||||
En la actividad principal tienes que llamar a startActivityForResult
Y en la secundaria, en vez de startActivity, tienes que llamar a setResult. Además, el Intent de la secundaria es simplemente new Intent(), porque no es para lanzar ninguna actividad. |
#3
|
||||
|
||||
Muchas gracias, he conseguido avanzar un poco, pero me encuentro el mismo problema, no consigo que pase la informacion a la primera activity
![]() |
#4
|
Has probado con los bundle? No soy ningún entendido pero me parece que te pueden servir justo para eso
|
#5
|
||||
|
||||
He conseguido terminar el codigo, aquí os lo dejo para aquel que necesite ayuda:
Código:
<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" /> <Button android:id="@+id/btn_provincia" android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="onProvinciaClick" android:text="Obtener Provincia" /> </LinearLayout> Código:
package com.example.tarea_pmdm03; import android.annotation.SuppressLint; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.view.View.OnLongClickListener; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; public class Tarea_PMDM03 extends ActionBarActivity { public final static String NOME = "com.example.NOME"; private static final int COD_PETICION = 33; 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_tarea__pmdm03); Button boton = (Button) findViewById(R.id.btn_enviar); boton.setOnLongClickListener(new OnLongClickListener() { @override public boolean onLongClick(View v) { // TODO Auto-generated method stub Intent intent = new Intent(); intent.setClassName("com.android.calculator2", "com.android.calculator2.Calculator"); startActivity(intent); return true; } }); } @override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.tarea__pmdm03, menu); return true; } public void onEnviarClick(View view) { Intent intent = new Intent(this, Provincia.class); startActivityForResult(intent, COD_PETICION); } @SuppressLint("NewApi") public void onProvinciaClick(View v) { Intent intent=getIntent(); String datos= "Su Provincia es: "+intent.getExtras().getString("PROVINCIA"); Toast.makeText(this,datos, Toast.LENGTH_LONG).show(); } public void finish() { super.finish(); Toast.makeText(this, "Gracias por probar la aplicación", Toast.LENGTH_SHORT).show(); } } Código:
<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:inputType="text|textCapWords" android:maxLength="15" 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="onCerrarClick" android:text="Cerrar" /> </LinearLayout> Código:
package com.example.tarea_pmdm03; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.EditText; public class Provincia extends ActionBarActivity { public static final String PROVINCIA = null; String Forma_Pechar_Activity; EditText etCadena; //Cuadro de texto donde se inserta la cadéna String contenidoCadena;//Aquí guardaremos el contenido del cuadro de texto para pasarselo a la siguiente actividad @override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_provincia); etCadena = (EditText)findViewById(R.id.etCadena);//Instanciamos etCadena } @override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.provincia, menu); return true; } @override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } public void onCerrarClick(View view){ EditText provincia=(EditText) findViewById(R.id.etCadena); Intent intent =new Intent(Provincia.this, Tarea_PMDM03.class); intent.putExtra("PROVINCIA", provincia.getText().toString()); startActivity(intent); finish(); super.finish(); } } |
Respuesta |
![]() |
||||||
|
«
Tema Anterior
|
Siguiente tema
»
Herramientas | |
|
|
Hora actual: 00:55:30 (GMT +2)
HTCMania: líderes desde el 2007