Pergunta

Sou iniciante em Android e no momento estou trabalhando em um aplicativo simples.Tenho 7 fotos e quero alterar uma por uma quando o usuário tocar na tela.Aqui está meu código, meu aplicativo trava no segundo toque na tela.Se alguém puder ajudar, ficarei grato.

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;
}

E mais uma pergunta:quando toco na tela pela primeira vez, o contador interno não aumenta.como posso consertar isso?

Foi útil?

Solução

Supondo R.drawable.meore, R.drawable.mesame, etc.são recursos desenháveis ​​em seu drawable pasta, isso deve 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;
}

Aqui, ele percorrerá os IDs dos recursos e alterará o ImageView cada vez que o usuário toca nele.

Outras dicas

Primeiro de tudo, você deve usar as constantes MotionEvent, pois elas podem mudar em versões futuras da API, além disso, você precisa retornar true após um evento de toque ser tratado.

Eu também sugiro que você adicione verificações nulas para garantir.

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;
}

Um rastreamento de pilha seria de muita ajuda se nenhum desses problemas fosse seu.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top