Android: OnClicklistener - PullRequest
       18

Android: OnClicklistener

1 голос
/ 18 февраля 2012

У меня проблема ... У меня разные текстовые представления со слушателем. Как эти:

    help_modul.setOnClickListener(this);
    help_timetable.setOnClickListener(this);
    help_credits.setOnClickListener(this);
    help_todo.setOnClickListener(this);

Вот мой слушатель:

@Override
public void onClick(View v) {

 String temp=   v.getId(); // DOESNT WORK
 Toast.makeText(this, temp, Toast.LENGTH_LONG).show();

}

В моем слушателе я хочу различать текстовое представление .... Например, нажмите на текстовое поле "a", чтобы сделать это, если щелчок на другом текстовом поле выполнит другую операцию

У вас есть предложения?

Ответы [ 4 ]

5 голосов
/ 18 февраля 2012

Попробуйте что-то вроде этого:

@Override
public void onClick(View v) {

switch (v.getId()) {
      case R.id.textview1:
        doSomething1();
        break;
      case R.id.textview2
        doSomething2();
        break;
  }
}
2 голосов
/ 18 февраля 2012

Вы могли бы а) сделать InstanceListeners, такие как:

TextView(context).setOnClickListener(new OnClickListener() {
    @Override public void onClick(View view) {
        // ...
        Log.d(TAG, "I'm doing stuff");
    }
}

или вы могли бы б) проверить экземпляры вашего текстового представления:

@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");
    }
}
0 голосов
/ 15 мая 2015

В этом выражении String temp= v.getId(); // DOESNT WORK вы получаете идентификатор представления с типом данных long, а затем присваиваете переменную String, что может быть правильным, но это неправильный подход.

Используйте этот улучшенный код 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*/
    }
}
0 голосов
/ 18 февраля 2012

Использовать корпус переключателя

@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;
    }

}
...