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?

È stato utile?

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*/
    }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top