ссылка на Android xml не работает с переключателем, а случай со статическим массивом - PullRequest
1 голос
/ 06 февраля 2012

Я пытаюсь сделать мою жизнь чертовски легкой, перемещаясь по кнопкам в моем XML (потому что у меня есть тонна кнопок). Почему это не работает?

Button bf[];
public static final int[] Buttons = { R.id.b1, R.id.b2, R.id.b3, R.id.b4,
        R.id.b5, R.id.b6, R.id.b7, R.id.b8, R.id.b9, R.id.bBack,
        R.id.bClearAll, R.id.bClear };

У меня есть static final int, который содержит некоторые из моих кнопок, это список в заголовке. В моем методе onCreate я настроил свои кнопки:

for (int i = 1; i < 10; i++) {

        bf[i] = (Button) findViewById(Buttons[i - 1]);
        bf[i].setOnClickListener(this);
    }

Красиво и легко, верно? но потом, когда я пытаюсь ссылаться на них в switch и case (в моем реализованном методе onClickListener у меня возникают проблемы:

for (int i = 1; i < 10; i++) {
        case Buttons[i-1]:
            Toast.makeText(this, bf[i].getText(), Toast.LENGTH_SHORT).show();
        break;
    }

Это не работает, поэтому я просто попробовал одну ссылку:

switch (v.getId()) {
    case Buttons[0]:
        Toast.makeText(this, bf[1].getText(), Toast.LENGTH_SHORT).show();
        break;

что тоже не работает?!?! Помогите пожалуйста?

1 Ответ

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

v Ваш View в onClickListener, верно?Почему бы вам не использовать:

Button b = (Button) v;
Toast.makeText(this, b.getText(), Toast.LENGTH_SHORT).show();

Некоторые другие пункты:

  • Вы не опубликовали полный код, но я думаю, вы можете изменить свой массив кнопок на приватный.*
  • Возможно, вам даже не нужен bf []

Редактировать: Также я бы предложил использовать этот цикл for для циклического переключения всех ваших кнопок, чтобы сделать его более гибким:

for (int i : Buttons) {
    Button b = findViewById(i);
    b.setOnClickListener(myClickListener);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...