У меня есть базовая игра для палача, а кнопки, чтобы сделать догадки, размещены на экране с помощью ImageButtons (у меня это прекрасно работает).Скажите, что нажата с помощью массива ImageButtons
Заявляю изображение кнопки ID как так:
private static final int[] BUTTON_IDS = {
R.id.imageButtonA, R.id.imageButtonB, R.id.imageButtonC, R.id.imageButtonD, R.id.imageButtonE,
R.id.imageButtonF, R.id.imageButtonG, R.id.imageButtonH, R.id.imageButtonI, R.id.imageButtonJ,
R.id.imageButtonK, R.id.imageButtonL, R.id.imageButtonM, R.id.imageButtonN, R.id.imageButtonO,
R.id.imageButtonP, R.id.imageButtonQ, R.id.imageButtonR, R.id.imageButtonS, R.id.imageButtonT,
R.id.imageButtonU, R.id.imageButtonV, R.id.imageButtonW, R.id.imageButtonX, R.id.imageButtonY, R.id.imageButtonZ
};
private List<ImageButton> buttonLetters = new ArrayList<ImageButton>();
Edited показать решение: зарегистрировать их OnClick, выполнив:
for (int id: BUTTON_IDS) {
final ImageButton buttonLettersUsage = (ImageButton)findViewById(id);
if (buttonLetters != null) {
assert buttonLettersUsage != null;
buttonLettersUsage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(HangmanActivity.this, " " + buttonLettersUsage.getId(), Toast.LENGTH_SHORT).show();
switch (buttonLettersUsage.getId()){
case R.id.imageButtonQ:
strGuessed = "Q";
break;
case R.id.imageButtonW:
strGuessed = "W";
break;
case R.id.imageButtonE:
strGuessed = "E";
break;
// ... Repeat for rest of buttons ...
default:
break;
}
btnGuessClicked(theIncorrectGuesses, theWord);
buttonLettersUsage.setVisibility(View.INVISIBLE);
}
});
}
}
Проблема теперь, я был работая над приложением еще с момента внедрения этой части, и все buttonLettersUsage.getId()
изменились.
Мой вопрос: Будет ли они меняться в любое время? Я не добавляю никаких новых компонентов в действие, почему они изменились? Есть ли лучший способ узнать, какая кнопка была нажата, и дать другое значение для strGuessed
в зависимости от того, какая была нажата?
Большое спасибо.
Почему у вас есть 'case 2131558500:'? – Blackbelt
Вы усложняете ситуацию, используйте gridview. Ваши случаи должны совпадать с идентификаторами кнопок, как в XML, включить этот переключатель - 'switch (view.getId())' – Skynet
2131558500 - это идентификатор для ImageButtonQ, или, по крайней мере, это было. Сейчас 2131558507. – Geoff