2016-07-22 4 views
0

у меня есть список кнопок и я загружать их в список, как это:OnClick обработчик события для кнопки не выполняется из списка кнопок

positionButtons.add((Button) findViewById(R.id.positionBtn0)); 
positionButtons.add((Button) findViewById(R.id.positionBtn1)); 
positionButtons.add((Button) findViewById(R.id.positionBtn2)); 

Я добавляю обработчики событий, как это:

Button.OnClickListener currentPositionListener = new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Log.d(this.getClass().getSimpleName(), "Current position selected"); 
      setSelectedPositionButton((Button) view); 
     } 
    }; 


for (Button positionButton: positionButtons) { 
     positionButton.setOnClickListener(currentPositionListener); 
} 

обработчики событий никогда не получить казнены (никаких сообщений об ошибках, хотя), и мне нужно иметь отдельную переменную для каждой кнопки для обработчика события будет выполняться:

positionButton0.setOnClickListener(currentPositionListener); 

Почему это происходит? Есть ли обходной путь, чтобы я мог просто добавлять кнопки в список и работать оттуда вместо того, чтобы проходить этап объявления отдельных переменных?

UPDATE:

Просьба ответить на актуальный вопрос и не рассматривать его в качестве поиска неисправностей. Если по вашему мнению и опыту это должно работать, вы можете просто добавить комментарий или ответ с фактическим рабочим примером. Я не пытаюсь отлаживать свой код, просто пытаясь получить больше информации.

+0

Try 'View.OnClickListener currentPositionListener = новый View.OnClickListener() {.....};' 'Вместо Button.OnclickListener' –

+0

вы можете поделиться полный исходный код. также попробуйте поставить Toast или использовать debug внутри 'onClick', чтобы убедиться, что этот метод не вызывается (потому что некогда лог-код не отображается) –

+0

@AkshayBhat нет. Я уже пробовал это. – atas76

ответ

0

Попробуйте сделать это следующим образом:

for (Button positionButton: positionButtons) { 
    positionButton.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick() { 
      // write your code... 
     } 
    }); 
} 
Смежные вопросы