PDA

Ver la Versión Completa : [ CONSULTA ] Recuperar datos en segundo Activity


asuka89
18/11/12, 14:23:56
Hola a todos,

estoy intentando pasar un dato a otro activity para recuperarlo. El codigo que he hecho en el main_activity.java es una accion que se ejecuta al pulsar un boton y es:

public void lanzar(View view) {
Intent i = new Intent(this, Segon.class );
Bundle bund1 = new Bundle();
String calories=String.valueOf(tv3);
bund1.putString("calories", calories);

i.putExtras(bund1);
startActivity(i);
}

tv3 es un textview que en ese momento es un numero

En el segon.java en el onCreate he puesto esto para que al iniciar la activity en un text view llamado tv4 se ponga el string de antes:

ublic void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.segon);

tv4=(TextView)findViewById(R.id.tv4);



Bundle datos = this.getIntent().getExtras();
String caloriesrecuperades = datos.getString("calories");
tv4.setText(caloriesrecuperades);
}

Pero no funciona, al iniciar la segunda actividad lo que me sale es "android.widget.TextView@405251c8".

No sé si el problema debe venir de cuando intento pasar el contenido de tv3 a un string que no lo hago bien... Pero no se me ocurre que otra forma puedo utilizar.

Gracias de antemano ;).

angelfmarcos
18/11/12, 16:07:17
Hola

tv3 es un TextView, no?

Si es así creo recordar que tienes que hacer tv3.getText ().toString ()

Un saludo

set92
18/11/12, 16:09:09
Yo cuando he usado los intents en clase lo he hecho algo mas corto y creo que hace lo mismo, seria asi:
Intent i = new Intent(this, Segon.class);
i.putExtras("direccion", EditText.getText().toString());

Y en la recojida usar
Bundle bundle=getIntent().getExtras();
tvTexto.setText(bundle.getString("direccion"));

Y sin problema ninguna nunca, acabo de estar probando alguna cosa pero en todos los casos me pone lo que yo le paso correctamente, en ninguno me muestra la direccion de memoria que es lo que te ha mostrado a ti, osea yo creo que el problema le tienes donde tu dices, pasando el contenido del textview a una variable, que deberia ser como lo tengo yo en el codigo arriba o creo que tambien te sirve tvTexto.toString();

EDIT: Igual esto te ayuda para aprender mas de los intents http://www.vogella.com/articles/AndroidIntent/article.html y aqui creo que son las 3 formas de pasar parametros, la tuya, la mia y otra parecida a la tuya http://stackoverflow.com/questions/768969/passing-a-bundle-on-startactivity

asuka89
18/11/12, 16:40:12
Yo cuando he usado los intents en clase lo he hecho algo mas corto y creo que hace lo mismo, seria asi:
Intent i = new Intent(this, Segon.class);
i.putExtras("direccion", EditText.getText().toString());

Y en la recojida usar
Bundle bundle=getIntent().getExtras();
tvTexto.setText(bundle.getString("direccion"));

Y sin problema ninguna nunca, acabo de estar probando alguna cosa pero en todos los casos me pone lo que yo le paso correctamente, en ninguno me muestra la direccion de memoria que es lo que te ha mostrado a ti, osea yo creo que el problema le tienes donde tu dices, pasando el contenido del textview a una variable, que deberia ser como lo tengo yo en el codigo arriba o creo que tambien te sirve tvTexto.toString();

EDIT: Igual esto te ayuda para aprender mas de los intents http://www.vogella.com/articles/AndroidIntent/article.html y aqui creo que son las 3 formas de pasar parametros, la tuya, la mia y otra parecida a la tuya http://stackoverflow.com/questions/768969/passing-a-bundle-on-startactivity

Gracias, de ésta manera funciona perfectamente (cambiando el putExtras por putExtra porque dice que no se puede con strings :S.

Gracias por el enlace de los Intent también ;)

PD: angelfmarcos, el error estaba ahí también gracias que lo decía de una manera incorrecta gracias también ^^