Android по умолчанию кнопка-слушатель? - PullRequest
2 голосов
/ 15 июня 2011

У меня 26 кнопок на моей активности (алфавит).Для всех них я хочу иметь одного и того же слушателя onclick.Есть ли другой способ установить «default-onlick-listener» для всех кнопок, без установки их через button.setOnClickListener(...)?

Было бы здорово.

Спасибо

Ответы [ 2 ]

2 голосов
/ 15 июня 2011

В вашей раскладке вы можете указать android:onClick для каждой кнопки. Кроме того, поскольку это просто еще один атрибут, вы также можете указать его в стиле или теме, эффективно устанавливая их все сразу.

Недостатком использования этого в качестве темы является то, что onClick будет применяться ко ВСЕМ представлениям. Наверное, не то, что вы хотите. Поэтому я бы предложил указать android:onClick для каждой кнопки.

Другой подход заключается в создании пользовательского представления, которое расширяется от Button и обеспечивает общие функции onClick.

Вот пример использования подхода android:onClick. В макете определите свои кнопки и укажите значение onClick:

<Button
    android:id="@+id/button1"
    android:tag="a"
    android:onClick="doSomething"
    ... />

<Button
    android:id="@+id/button2"
    android:tag="a"
    android:onClick="doSomething"
    ... />

<Button
    android:id="@+id/button3"
    android:tag="b"
    android:onClick="doSomething"
    ... />

И ваша деятельность будет иметь метод doSomething:

public void doSomething(View v) {
    // in here, we can branch off based on the ID or the tag.
    switch (v.getId()) {
    case R.id.button1:
        // something
        break;
    case R.id.button2:
        // something
        break;
    case R.id.button3:
        // something
        break;
    }

    if (v.getTag() != null && v.getTag().equals("a")) {
        // do something for the button's tagged with 'a'
    }
}
1 голос
/ 15 июня 2011

попробуйте удалить свойство android: onClick = "myOnClickListener" в вашем макете xml.

Пример:

<Button 
  android:text="A"
  android:id="@+id/ButtonA"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:onClick="MyOnClickListener">
</Button>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...