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?

War es hilfreich?

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*/
    }
}

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top