Android Studio: разные кнопки с одинаковым идентификатором?

Вопрос: У меня есть специальная кнопка, которая появляется в нескольких областях в том же самом действии, которое имеет функцию сброса. Поскольку AS не разрешало мне объявлять несколько экземпляров этой кнопки в одном и том же действии с тем же именем ID, мне было интересно, можно ли воссоздать эту функциональность по-другому. Теперь у меня есть 3

Вопрос:

У меня есть специальная кнопка, которая появляется в нескольких областях в том же самом действии, которое имеет функцию сброса. Поскольку AS не разрешало мне объявлять несколько экземпляров этой кнопки в одном и том же действии с тем же именем ID, мне было интересно, можно ли воссоздать эту функциональность по-другому.

Теперь у меня есть 3 разных кнопки, соответственно называемые Reset, с идентификаторами reset1, reset2, reset3;

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

switch(button){ case reset1: case reset2: case reset3: doSomething(); break; }

Для меня было бы проще просто использовать один идентификатор для всех этих кнопок. Почему я не могу это сделать? Каковы риски? Есть ли альтернатива методу, который я использую сейчас?

Лучший ответ:

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

<Button android:id=»@+id/reset1″ android:layout_width=»wrap_content» android:layout_height=»wrap_content» android:text=»Reset» android:onClick=»onReset»/> //Check this <Button android:id=»@+id/reset2″ android:layout_width=»wrap_content» android:layout_height=»wrap_content» android:text=»Reset» android:onClick=»onReset»/> <Button android:id=»@+id/reset3″ android:layout_width=»wrap_content» android:layout_height=»wrap_content» android:text=»Reset» android:onClick=»onReset»/>

Теперь в вашем MyActivity.java создайте метод onReset как:

public void onReset(View v){ //do something. }

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

Ответ №1

Вместо этого оператора switch вы можете назначить один и тот же OnClickListener для всех трех кнопок:

OnClickListener listener = new OnClickListener() { public void onClick(View view) { doSomething(); } } findViewById(R.id.reset1).setOnClickListener(listener); findViewById(R.id.reset2).setOnClickListener(listener); findViewById(R.id.reset3).setOnClickListener(listener);

Оцените статью
Добавить комментарий