Android: OnClicklistener
-
27-10-2019 - |
Frage
Ich habe ein Problem ... Ich habe verschiedene Textansichten mit einem Listener.Wie diese:
help_modul.setOnClickListener(this);
help_timetable.setOnClickListener(this);
help_credits.setOnClickListener(this);
help_todo.setOnClickListener(this);
Hier ist mein Zuhörer:
@Override
public void onClick(View v) {
String temp= v.getId(); // DOESNT WORK
Toast.makeText(this, temp, Toast.LENGTH_LONG).show();
}
In meinem Listener möchte ich zwischen meiner Textansicht unterscheiden. Klicken Sie beispielsweise auf Textfeld "a", wenn Sie auf ein anderes Textfeld klicken, um eine andere Operation auszuführen.
Haben Sie Vorschläge?
Lösung
Versuchen Sie Folgendes:
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.textview1:
doSomething1();
break;
case R.id.textview2
doSomething2();
break;
}
}
Andere Tipps
Sie könnten a) Erstellen Sie InstanceListener wie:
TextView(context).setOnClickListener(new OnClickListener() {
@Override public void onClick(View view) {
// ...
Log.d(TAG, "I'm doing stuff");
}
}
oder du könntest b) Überprüfen Sie die Instanzen Ihrer Textansicht:
@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");
}
}
Verwenden Sie einen Schalterfall
@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 dieser Anweisung String temp= v.getId(); // DOESNT WORK
erhalten Sie die ID der Ansicht, die vom Datentyp long
ist, und weisen dann der Variablen String
zu, die zwar korrekt ist, aber einen schlechten Ansatz aufweist.
Verwenden Sie dieses verbesserte Code-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*/
}
}