Home Menu

Menu



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


 
Herramientas
  #1  
Viejo 05/02/15, 20:19:32
Avatar de Zephys
Zephys Zephys no está en línea
Usuario poco activo
Mensajes: 27
 
Fecha de registro: nov 2011
Localización: Vigo
Mensajes: 27
Modelo de smartphone: Xperia SP
Tu operador: Vodafone
Mencionado: 0 comentarios
Tagged: 0 hilos
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>
Java activity principal
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
 

}
}
Xml activity secundaria
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>
Java activity secundaria
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
    }
	
}
Responder Con Cita


  #2  
Viejo 05/02/15, 20:54:06
Avatar de mocelet
mocelet mocelet no está en línea
Desarrollador
Mensajes: 2,203
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -
Mencionado: 17 comentarios
Tagged: 2 hilos
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.
Responder Con Cita
  #3  
Viejo 05/02/15, 23:23:56
Avatar de Zephys
Zephys Zephys no está en línea
Usuario poco activo
Mensajes: 27
 
Fecha de registro: nov 2011
Localización: Vigo
Mensajes: 27
Modelo de smartphone: Xperia SP
Tu operador: Vodafone
Mencionado: 0 comentarios
Tagged: 0 hilos
Muchas gracias, he conseguido avanzar un poco, pero me encuentro el mismo problema, no consigo que pase la informacion a la primera activity
Responder Con Cita
  #4  
Viejo 17/02/15, 16:31:58
Avatar de carliquiss
carliquiss carliquiss no está en línea
DroidMaster en Youtube
Mensajes: 1,730
 
Fecha de registro: dic 2014
Mensajes: 1,730
Modelo de smartphone: Mi Pad 4 / Mi Pad 5 / Lenovo Legion Y700
Versión de ROM: Android One Stock 9.X / Lineage / MIUI / ZUI
Tu operador: Movistar
Mencionado: 49 comentarios
Tagged: 0 hilos
Has probado con los bundle? No soy ningún entendido pero me parece que te pueden servir justo para eso
Responder Con Cita
  #5  
Viejo 24/02/15, 15:44:02
Avatar de Zephys
Zephys Zephys no está en línea
Usuario poco activo
Mensajes: 27
 
Fecha de registro: nov 2011
Localización: Vigo
Mensajes: 27
Modelo de smartphone: Xperia SP
Tu operador: Vodafone
Mencionado: 0 comentarios
Tagged: 0 hilos
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();
}

}
Activty secundaria:
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();
		}

}
Responder Con Cita
Respuesta

Estás aquí
Regresar   HTCMania > Todo sobre Android > Programación y Desarrollo para Android

Herramientas

Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 00:55:30 (GMT +2)

Cookies
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007