Android: OnClicklistener
-
27-10-2019 - |
Domanda
ho un problema ... ho diverse visualizzazioni di testo con un ascoltatore.Come questi:
help_modul.setOnClickListener(this);
help_timetable.setOnClickListener(this);
help_credits.setOnClickListener(this);
help_todo.setOnClickListener(this);
Ecco il mio ascoltatore:
@Override
public void onClick(View v) {
String temp= v.getId(); // DOESNT WORK
Toast.makeText(this, temp, Toast.LENGTH_LONG).show();
}
Nel mio ascoltatore voglio differire tra la mia visualizzazione di testo .... Ad esempio, fai clic sul campo di testo "a", se un clic su un altro campo di testo esegui un'altra operazione ..
Hai qualche suggerimento?
Soluzione
Prova qualcosa di simile:
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.textview1:
doSomething1();
break;
case R.id.textview2
doSomething2();
break;
}
}
Altri suggerimenti
Potresti a) creare InstanceListeners come:
TextView(context).setOnClickListener(new OnClickListener() {
@Override public void onClick(View view) {
// ...
Log.d(TAG, "I'm doing stuff");
}
}
oppure potresti b) controlla le istanze della tua visualizzazione di testo:
@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");
}
}
Utilizza una custodia per interruttore
@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;
}
}
In questa istruzione String temp= v.getId(); // DOESNT WORK
si ottiene l'ID di visualizzazione che è di tipo dati long
e quindi si assegna alla variabile String
, che potrebbe essere corretto ma è un approccio errato.
Utilizza questo codice migliorato per istruzioni :
@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*/
}
}