Pregunta

Soy un principiante en Android y en este momento estoy trabajando en una aplicación sencilla.Tengo 7 imágenes y quiero cambiar una por una cuando el usuario toca la pantalla.Aquí está mi código, mi aplicación falla al segundo toque en la pantalla.Si alguien puede ayudar, se lo agradecería.

public class Game extends Activity {
public TextView result;
public ImageView pirveli, meore, mesame, meotxe, mexute, meeqvse, meshvide;

int counter=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.game);
    result = (TextView) findViewById(R.id.result);
    result.setText("Number of steps made: " + counter);

    pirveli = (ImageView) findViewById(R.drawable.pirveli);
    meore = (ImageView) findViewById(R.drawable.meore);
    mesame = (ImageView) findViewById(R.drawable.mesame);
    meotxe = (ImageView) findViewById(R.drawable.meotxe);
    mexute = (ImageView) findViewById(R.drawable.mexute);
    meeqvse = (ImageView) findViewById(R.drawable.meeqvse);
    meshvide= (ImageView) findViewById(R.drawable.meshvide);
}

public boolean onTouchEvent(MotionEvent event) {
    // TODO Auto-generated method stub
    if(event.getAction()==0){

    result.setText("Number of steps made: " + counter);
    counter++; 

    pirveli.setImageResource(R.drawable.meore);
    }
    return false;
}

Y una pregunta más:cuando toco la pantalla por primera vez, el contador int no aumenta.¿Cómo puedo arreglarlo?

¿Fue útil?

Solución

Asumiendo R.drawable.meore, R.drawable.mesame, etc.son recursos disponibles en su drawable carpeta, esto debería funcionar.

public class Game extends Activity {

TextView result;
int[] drawableIds = {R.drawable.meore, R.drawablemeSame, R.drawable.meotxe, R.drawable.mexute, R.drawable.meeqvse, R.drawable.meshvide};   
int counter=0;

@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.game);
  result = (TextView) findViewById(R.id.result);
  result.setText("Number of steps made: " + counter);

  pirveli = (ImageView) findViewById(R.drawable.pirveli);
  pirveli.setOnTouchListener(this);
}

public boolean onTouchEvent(MotionEvent event) {
  if(event.getAction()==MotionEvent.ACTION_DOWN){
     result.setText("Number of steps made: " + counter);
     counter++;
     pirveli.setImageResource( drawableIds[ drawableIds.length % counter ] );
  }
  return false;
}

Aquí, recorrerá los ID de recursos y cambiará el ImageView cada vez que el usuario lo toca.

Otros consejos

En primer lugar, debe usar las constantes de MotionEvent, ya que podrían cambiar en futuras versiones de API, también debe devolver la verdadera después de manejar un evento táctil.

También le sugiero que agregue cheques nulos para una buena medida.

public boolean onTouchEvent(MotionEvent event) {
    // TODO Auto-generated method stub
    if(event.getAction() == MotionEvent.ACTION_DOWN){
        if (result != null);
            result.setText("Number of steps made: " + counter);
        counter++; 

        if (pirveli != null)
            pirveli.setImageResource(R.drawable.meore);
        return true;
    }
    return false;
}

Una traza de pila sería de mucha ayuda si ninguno de esos es sus problemas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top