Android: OnClicklistener
-
27-10-2019 - |
Pregunta
Tengo un problema ... Tengo diferentes vistas de texto con un oyente.Como estos:
help_modul.setOnClickListener(this);
help_timetable.setOnClickListener(this);
help_credits.setOnClickListener(this);
help_todo.setOnClickListener(this);
Aquí está mi oyente:
@Override
public void onClick(View v) {
String temp= v.getId(); // DOESNT WORK
Toast.makeText(this, temp, Toast.LENGTH_LONG).show();
}
En mi oyente quiero diferenciar entre mi vista de texto ... Por ejemplo, haga clic en el campo de texto "a", haga eso, si hace clic en otro campo de texto, haga otra operación ..
¿Tiene alguna sugerencia?
Solución
Pruebe algo como esto:
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.textview1:
doSomething1();
break;
case R.id.textview2
doSomething2();
break;
}
}
Otros consejos
Podrías a) hacer InstanceListeners como:
TextView(context).setOnClickListener(new OnClickListener() {
@Override public void onClick(View view) {
// ...
Log.d(TAG, "I'm doing stuff");
}
}
o podrías b) verifique las instancias de su vista de texto:
@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");
}
}
Utilice una funda 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;
}
}
En esta declaración String temp= v.getId(); // DOESNT WORK
, obtiene la identificación de la vista que es del tipo de datos long
y luego la asigna a la variable String
, que puede ser correcta, pero es un mal enfoque.
Utilice este código mejorado en lectura :
@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*/
}
}