Android: OnClicklistener
-
27-10-2019 - |
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?
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*/
}
}