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

Respuesta
 
Herramientas
  #1  
Viejo 01/12/12, 00:48:48
Array

[xs_avatar]
mascamasca mascamasca no está en línea
Usuario novato en la web
 
Fecha de registro: nov 2012
Mensajes: 18
Tu operador: Movistar

Problema al pasar datos entre actividades

Primeramente saludar a todos puesto que es miprimera vez en este foro.
Bueno os explico el problema.
Tengo una actividad con un listview y un adaptador, y cuando se pulsa en uno de elementos de la lista debe pasar a otra actividad en la que nos muestra todos los datos de ese contacto.
os pongo el codigo para que me digais que puede estar mal.

Código:
public class lista extends Activity {
    private bbdd BBDD;
    private int posBBDD=0;
    private Cursor dataBBDD;
    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.lista);
        BBDD=new bbdd(this);
        ArrayList<String> contactos = new ArrayList <String>();


        dataBBDD= BBDD.getReadableDatabase().rawQuery("SELECT nombre FROM "+bbdd.BBDD_TABLA_datos,null);
        if(dataBBDD.moveToFirst()){
            do{
                contactos.add(dataBBDD.getString(0));
            }while(dataBBDD.moveToNext());
        }

        ListView listaCon=(ListView) findViewById(R.id.lstLista);

        ArrayAdapter<String> adaptor=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,contactos);
        listaCon.setAdapter(adaptor);

        OnItemClickListener mMessageClickedHandler=new OnItemClickListener(){
            @SuppressWarnings("rawtypes")

            public void onItemClick(AdapterView parent, View v, int position,long id){
                pasar(position);


                //Toast.makeText(getApplicationContext(), "Click en el nombre "+position.toString(), Toast.LENGTH_SHORT).show();
            }//fin void onitem
        };//fin onitemclicklistener
        listaCon.setOnItemClickListener(mMessageClickedHandler);
        BBDD.close();

    }
    public void pasar( int cual){
        Intent pos=new Intent(this,detalle.class);
        pos.putExtra("cual",cual);
        startActivity(pos);
    }
}
y aqui es donde supuestamente muestra los dato del contacto con la posicion que nos pasa de la anterior actividad.
Código:
public class detalle extends Activity {
    private bbdd BBDD;
    private int posBBDD=0;
    private Cursor dataBBDD;
    private TextView nombre;
    private TextView ap1;
    private TextView ap2;
    private TextView cal;
    private TextView num;
    private TextView pis;
    private TextView let;
    int i;

    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.detalle);
        BBDD=new bbdd(this);
        Intent cual=getIntent();
        i=cual.getIntExtra("position",0);
        dataBBDD= BBDD.getReadableDatabase().rawQuery("SELECT * FROM "+bbdd.BBDD_TABLA_datos,null);
        nombre=(TextView)this.findViewById(R.id.nom);
        ap1=(TextView)this.findViewById(R.id.ape1);
        ap2=(TextView)this.findViewById(R.id.ap2);
        cal=(TextView)this.findViewById(R.id.via);
        num=(TextView)this.findViewById(R.id.num);
        pis=(TextView)this.findViewById(R.id.piso);
        let=(TextView)this.findViewById(R.id.puerta);

        if(dataBBDD.moveToFirst()){
            nombre.setText(dataBBDD.getString(1));
            ap1.setText(dataBBDD.getString(2));
            ap2.setText(dataBBDD.getString(3));
            cal.setText(dataBBDD.getString(5));
            num.setText(dataBBDD.getString(6));
            pis.setText(dataBBDD.getString(7));
            let.setText(i);
            //let.setText(dataBBDD.getString(8));
        }

        BBDD.close();
    }
}
Muchas gracias por todo.
Responder Con Cita


  #2  
Viejo 01/12/12, 09:28:17
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
En el putExtra al parámetro lo llamas "cual", y en el getIntExtra tratas de recogerlo como "position".

Así de entrada y sin mirar nada más, eso está mal. Los 2 deben llamarse igual.
Responder Con Cita
Gracias de parte de:
  #3  
Viejo 01/12/12, 11:10:09
Array

[xs_avatar]
mascamasca mascamasca no está en línea
Usuario novato en la web
 
Fecha de registro: nov 2012
Mensajes: 18
Tu operador: Movistar

Muchas gracias.
La verdad es que después detoda la tarde y a las horas que eran es normal, jajja.

Pero el problema lo tengo cuando recojo el valor en la segunda actividad.

Código:
Intent cual=getIntent();
        i=cual.getIntExtra("position",0);
en el getIntExtra("xxxx",x) el primer valor es la variable que traigo de la anterior actividad pero y en el segundo, porque dependiendo del valor que ponga ahí cuando le digo al cursor que vaya a la posicion que me da la variable.
Responder Con Cita
  #4  
Viejo 01/12/12, 11:31:02
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
Es el valor por defecto si la variable que pasas como parámetro no existe. En este caso si "position" no existe el valor de i siempre será 0.

Se usa para cuando quieres dar valores por defecto a una Activity sin tener que pasarle parámetros, por ejemplo por si quieres llamarla desde el propio Launcher.
Responder Con Cita
Gracias de parte de:
  #5  
Viejo 01/12/12, 12:56:54
Array

[xs_avatar]
mascamasca mascamasca no está en línea
Usuario novato en la web
 
Fecha de registro: nov 2012
Mensajes: 18
Tu operador: Movistar

Ya lo entiendo pero el problema es que supuestamente si debe coger el valor de position del onclick listener, porque si le hago un toast si lo muestra pero no lo envía a la siguiente actividad.
Responder Con Cita
  #6  
Viejo 01/12/12, 13:58:18
Array

[xs_avatar]
mascamasca mascamasca no está en línea
Usuario novato en la web
 
Fecha de registro: nov 2012
Mensajes: 18
Tu operador: Movistar

Ya está solucionado.
Era que las variables las ponía mal como me dijiste y que a la hora de recuperarla con la opción que tenía puesto no funcionaba bien y usé ésta.
Código:
Bundle cual = getIntent().getExtras();
i= cual.getInt("position");
 
// en vez de ésta
Intent cual=getIntent();
        i=cual.getIntExtra("position",0);
Muchas garcias por la ayuda.
Un saludo.
Responder Con Cita
  #7  
Viejo 01/12/12, 16:04:07
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
Pues no lo entiendo, debería funcionar de las 2 formas.

getIntExtra lo que hace internamente es convocar al "getExtras().getInt". Por eso uno se hace sobre el Intent y el otro directamente sobre el Bundle.
Responder Con Cita
Gracias de parte de:
  #8  
Viejo 02/12/12, 13:14:42
Array

[xs_avatar]
mascamasca mascamasca no está en línea
Usuario novato en la web
 
Fecha de registro: nov 2012
Mensajes: 18
Tu operador: Movistar

Eso también me extrañaba a mí pero ha funcionado, y si algo he aprendido en la programación es que cuando algo funciona es mejor no tocarlo, jejejeje

Un saludo y de verdad muchas gracias por la ayuda.
Responder Con Cita
  #9  
Viejo 02/12/12, 23:15:23
Array

[xs_avatar]
superroko2 superroko2 no está en línea
Miembro del foro
 
Fecha de registro: oct 2012
Mensajes: 93
Tu operador: Movistar

 Cita: Originalmente Escrito por kriogeN Ver Mensaje
Pues no lo entiendo, debería funcionar de las 2 formas.

getIntExtra lo que hace internamente es convocar al "getExtras().getInt". Por eso uno se hace sobre el Intent y el otro directamente sobre el Bundle.
Me pasó algo parecido hace tiempo, tampoco llegue a comprender jamás porque no funcionaba si en realidad es lo mismo hacerlo junto que separado.

Pero bueno, como en C por ejemplo tampoco te dejan declarar variables dentro de bucles (por ejemplo: for (int i = 0; i < 24; ++i) ).

Pues al final me he acostumbrado a hacerlo todo paso a paso, por novato, pesado, largo, o lo que sea que parezca, vale más asegurar.
Responder Con Cita
Gracias de parte de:
  #10  
Viejo 10/12/12, 20:06:11
Array

[xs_avatar]
mascamasca mascamasca no está en línea
Usuario novato en la web
 
Fecha de registro: nov 2012
Mensajes: 18
Tu operador: Movistar

 Cita: Originalmente Escrito por superroko2 Ver Mensaje
Me pasó algo parecido hace tiempo, tampoco llegue a comprender jamás porque no funcionaba si en realidad es lo mismo hacerlo junto que separado.

Pero bueno, como en C por ejemplo tampoco te dejan declarar variables dentro de bucles (por ejemplo: for (int i = 0; i < 24; ++i) ).

Pues al final me he acostumbrado a hacerlo todo paso a paso, por novato, pesado, largo, o lo que sea que parezca, vale más asegurar.
Tines razón, lo mejor es hacerlo paso a paso.
Responder Con Cita
Respuesta

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



Hora actual: 18:08:07 (GMT +1)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /