Pergunta

Eu tenho um problema ... Tenho diferentes visualizações de texto com um ouvinte.Como estes:

    help_modul.setOnClickListener(this);
    help_timetable.setOnClickListener(this);
    help_credits.setOnClickListener(this);
    help_todo.setOnClickListener(this);

Aqui está meu ouvinte:

@Override
public void onClick(View v) {

 String temp=   v.getId(); // DOESNT WORK
 Toast.makeText(this, temp, Toast.LENGTH_LONG).show();

}

No meu ouvinte, quero diferenciar entre a minha visualização de texto ... Por exemplo, clique no campo de texto "a" para fazer isso, se clicar em outro campo de texto, faça outra operação.

Tem alguma sugestão?

Foi útil?

Solução

Tente algo assim:

@Override
public void onClick(View v) {

switch (v.getId()) {
      case R.id.textview1:
        doSomething1();
        break;
      case R.id.textview2
        doSomething2();
        break;
  }
}

Outras dicas

Você poderia a) fazer InstanceListeners como:

TextView(context).setOnClickListener(new OnClickListener() {
    @Override public void onClick(View view) {
        // ...
        Log.d(TAG, "I'm doing stuff");
    }
}

ou você poderia b) verifique as instâncias do seu textview:

@Override public void onClick(View view) {
    if (view == mGirlTextView) {
        // Do Stuff
        Log.d(TAG, "I'm Forever alone");
    } else if (view == mBoyTextView) {
        // Do moar stuff
        Log.d(TAG, "Let's grab a beer");
    }
}

Use uma caixa de interruptor

@Override
public void onClick(View v) {
    switch (v.getId()) {
    case R.id.help_modul:
        // do code
        break;
    case R.id.help_timetable:
        // do code
        break;
    case R.id.help_credits:
        // do code
        break;
    case R.id.help_todo:
        // do code
        break;
    }

}

Nesta declaração String temp= v.getId(); // DOESNT WORK você está obtendo o id of view, que é do tipo de dados long e, em seguida, atribuindo à variável String, o que pode estar correto, mas é uma abordagem ruim.

Use este código aprimorado instread :

 @Override
 public void onClick(View v) {
    if(v.getId() == help_modul.getId())
    {
        /*do some work on the click*/
    }
    else if(v.getId() == help_timetable.getId())
    {
        /*do some work on the click*/
    }
    else if(v.getId() == help_credits.getId())
    {
        /*do some work on the click*/
    }
    else if(v.getId() == help_todo.getId())
    {
        /*do some work on the click*/
    }
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top