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 01/12/12, 00:48:48
Avatar de mascamasca
mascamasca mascamasca no está en línea
Usuario novato en la web
Mensajes: 18
 
Fecha de registro: nov 2012
Mensajes: 18
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
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
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
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
Avatar de mascamasca
mascamasca mascamasca no está en línea
Usuario novato en la web
Mensajes: 18
 
Fecha de registro: nov 2012
Mensajes: 18
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
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
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
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
Avatar de mascamasca
mascamasca mascamasca no está en línea
Usuario novato en la web
Mensajes: 18
 
Fecha de registro: nov 2012
Mensajes: 18
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
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
Avatar de mascamasca
mascamasca mascamasca no está en línea
Usuario novato en la web
Mensajes: 18
 
Fecha de registro: nov 2012
Mensajes: 18
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
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
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
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
Avatar de mascamasca
mascamasca mascamasca no está en línea
Usuario novato en la web
Mensajes: 18
 
Fecha de registro: nov 2012
Mensajes: 18
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
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
Avatar de superroko2
superroko2 superroko2 no está en línea
Miembro del foro
Mensajes: 93
 
Fecha de registro: oct 2012
Mensajes: 93
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
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
Avatar de mascamasca
mascamasca mascamasca no está en línea
Usuario novato en la web
Mensajes: 18
 
Fecha de registro: nov 2012
Mensajes: 18
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
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   HTCMania > Todo sobre Android > Programación y Desarrollo para Android


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: 18:56:48 (GMT +1)

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