PDA

Ver la Versión Completa : [ CONSULTA ] Variables con $


pablogarcia013
13/02/13, 14:02:30
Hola de nuevo!

Vengo con una duda que tras mucho investigar no se por que pasa.
Tengo una clase llamada "Botonera" con una serie de atributos y uno de ellos es "int pos."
dentro de esta clase tambien tengo un boton al que le asigno un onClickListener de esta manera:

b.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v){
/*
* AQUI TENGO LAS INSTRUCCIONES
*/
}
}

En otro metodo que no pertenece a esta clase accedo a un objeto de esta clase y modifico el pos con un simple setter.

cuando pulso el boton y se llama al evento onClick mencionado arriba, necesito acceder a la variable pos y ver el valor nuevo que he modificado, debugueando me sale esto:

pos = 3 (donde 3 es el valor nuevo que cambie)
val$pos = 4 (donde 4 es el valor antiguo al que parece ser que no se le ha aplicado la modificacion)

cuando lo utilizo y hago dentro del onClick un simple " int x= pos" me coge el valor 4 es decir el de val$pos.

¿Alguien sabe porque pasa esto y como se soluciona?

Muchas Gracias.

mocelet
13/02/13, 14:47:35
¿Puede ser que tengas dos variables pos definidas, una en el método y otra en la clase?

pablogarcia013
14/02/13, 09:07:18
Solo tengo una y al estar dentro del onClick tengo que acceder a ella asi:
modelo.setPosicion(pos) y no puedo hacerlo asi modelo.setPosicion(this.pos) no se si esto tendra algo que ver

mocelet
14/02/13, 09:15:28
¿Pero el "pos" que cambias dónde está definido y dónde lo cambias?

pablogarcia013
14/02/13, 09:37:02
Ya encontre el fallo y va mas o menos por lo que me dijiste en el la primera respuesta, lo pongo aqui por si alguien le pasa lo mismo.

Tengo una clase Botonera de esta manera:


public class Botonera extends RelativeLayout{

private int pos;
private ImageButton b;
private Activity act;
private Modelo modelo;

public Botonera(Context principal,Bitmap btmp,Modelo m,final int pos,Activity act){

super(principal);
this.act=act;
this.modelo=m;
this.pos=pos;
this.b = new ImageButton(principal);
this.b.setOnClickListener(new OnClickListener(){
@Override
public boolean onClick(new OnClickListener(){
modelo.setImagenActual(pos);
return false;
}
});


Si quitaba el final del constructor me daba fallo, y eclipse me sugeria que lo pusiera, ahi deberia estar el fallo. Lo que he hecho ha sido quitarlo y me seguia dando un error, entonces cambie el nombre de la variable pos en el constructor y me quedo la cabecera de esta manera
public Botonera(Context principal,Bitmap btmp,Modelo m,final int posic,Activity activ){
super(principal);
this.act=activ;
this.modelo=m;
this.pos=posic;
....

de esa manera se soluccionaba el fallo y en la instruccion modelo.setImagenActual(pos) pos sale coloreada de azul como indicando que se esta accediendo al atributo de la clase botonera.

Espero haberme explicado bien.

Muchas gracias!