cambio de color después del segundo clic del botón

¿Cómo puedo usar la "declaración de cambio" para cambiar los colores del botón 1 al botón 2, después del segundo clic? estos son mis 2 clics en los botones

private int lCount = 0;
private int rCount = 0;
private int myCount = lCount & rCount;

final TextView countTextViewPlusL = (TextView) findViewById(R.id.TextViewCountL);
final Button countButtonPlusL = (Button) findViewById(R.id.ButtonCountPlusL);

countButtonPlusL.setOnClickListener(new OnClickListener() {

    public void onClick(View v) {
        myCount++;
          if(myCount%2 == 0){
             countTextViewPlusL.setBackgroundColor(0xffffffff);}
          else countTextViewPlusL.setBackgroundColor(0x00000000);
        lCount++;
        if (lCount >-1)
        countTextViewPlusL.setText("" + lCount);
    }
});


final TextView countTextViewPlusR = (TextView) findViewById(R.id.TextViewCountR);
final Button countButtonPlusR = (Button) findViewById(R.id.ButtonCountPlusR);

countButtonPlusR.setOnClickListener(new OnClickListener() {

    public void onClick(View v) {
        myCount++;
          if(myCount%2 == 0){
            countTextViewPlusR.setBackgroundColor(0xffffffff);}
          else countTextViewPlusR.setBackgroundColor(0x00000000);
        rCount++;
        if (rCount >-1)
        countTextViewPlusR.setText("" + rCount);
    }
});

preguntado el 16 de mayo de 11 a las 20:05

& es un operador bit a bit. ¿Está intentando agregar lCount y rCount? Deberías usar lCount + rCount en lugar de. -

2 Respuestas

Te estás incrementando lCount y/o rCount en tus oyentes, pero estás probando myCount por la paridad. Por eso las cosas no cambian.

contestado el 17 de mayo de 11 a las 00:05

este es el int privado: private int lCount = 0; private int rCount = 0; private int myCount = lCount & rCount; cómo usar la declaración de cambio - HunterX86

Definición mycount = lCount & rCount conjuntos myCount a un valor que no cambia simplemente porque lCount y/o rCount cambios. Te sugiero que escribas una función int myCount() { return lCount & rCount; } y utilícelo en su lugar. O simplemente prueba contra ((lCount & rCount) % 2 == 0). - Ted Hopp

ok, pero ahora quiero usar una declaración de cambio. ¿Cómo puedo hacer eso? - HunterX86

¿Por qué es necesario utilizar una declaración de cambio? Su prueba de paridad parece estar bien. Si necesita cambiar, algo como esto funcionará: switch (myCount()) { case 0: /* stuff */; break; case 1: /* etc */; break; } - Ted Hopp

¿Por qué no intentas algo como esto en su lugar?

private int lCount = 0;
private int rCount = 0;
private int myCount = 0;

final TextView countTextViewPlusL = (TextView) findViewById(R.id.TextViewCountL); 
final Button countButtonPlusL = (Button) findViewById(R.id.ButtonCountPlusL);
final TextView countTextViewPlusR = (TextView) findViewById(R.id.TextViewCountR); 
final Button countButtonPlusR = (Button) findViewById(R.id.ButtonCountPlusR);

View.OnClickListener listener = new View.OnClickListener() {
    public void onClick(View v) {
        switch(v.getId()) {
            case R.id.ButtonCountPlusR:
                rCount++;
                break;
            case R.id.ButtonCountPlusL:
                lCount++;
                break;
        }
        myCount = lCount + rCount;
        if(myCount % 2 == 0) {
            //invert colors here
        }
    }
});

countButtonPlusL.setOnClickListener(listener);
countButtonPlusR.setOnClickListener(listener);

Inicialice todos los contadores a cero, luego verifique en cada clic en qué botón se hizo clic, incremente su contador, establezca myCount igual a la suma de los contadores izquierdo y derecho, luego verifique si es un segundo clic. Dentro de ese cheque, invierta los colores de TextView.

contestado el 17 de mayo de 11 a las 02:05

obtengo un error en la última fila. ";" Multiple markers at this line - Syntax error, insert "}" to complete Block - Syntax error, insert ";" to complete FieldDeclaration - Syntax error, insert "}" to complete ClassBody . y aparece un error en el último "}" Syntax error on token "}", { expected - HunterX86

Dejé algunos paréntesis y puntos y comas. Pruebalo ahora. - Kevin Coppock

¿Qué tengo que rellenar exactamente aquí: // invertir colores aquí. y cómo - HunterX86

Depende de cómo estés configurando los colores, en realidad. Si simplemente va a cambiar entre blanco y negro como se muestra allí, no hay un getBackgroundColor() método, pero supongo que podrías usar getDrawable() y obtén un píxel. XOR ese valor de color con 1s y debería invertirlo. No tengo un código de improviso para eso. De lo contrario, podría subclasificar sus TextViews y tener una variable para realizar un seguimiento de cuál era el color e intercambiarlos de esa manera. - Kevin Coppock

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.