Форум программистов, компьютерный форум CyberForum.ru

Применение общего обработчика нажатия для всех кнопок на форме - Android

Восстановить пароль Регистрация
 
strevg
1 / 1 / 0
Регистрация: 24.06.2013
Сообщений: 57
01.07.2013, 21:28     Применение общего обработчика нажатия для всех кнопок на форме #1
Добрый день.
Как можно сделать так, чтобы ко всем кнопкам на экране ,применялся один обработчик.
Я знаю, что можно прописать каждой кнопке этот обработчик, но можно ли это сделать сразу для всех, из принципа чтобы было более эффективно и меньше кода писать.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
public class MainActivity extends Activity implements OnClickListener {
    Button btn1,btn2,btn3,btn4,btn5,btn6,btn7,btn8,btn9,btn0,btnDel,btnSqrt,btnSqr,btnInv,btnProc,btnAdd,btnPoint,btnEqual,btnSub,btnMul;
    EditText editText;
    TextView textview1;
    float num=0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //Находим элементы на экране
        editText = (EditText) findViewById(R.id.editText1);
        textview1 = (TextView) findViewById(R.id.textView1);
        
        btn0 = (Button) findViewById(R.id.btn0);
        btn1 = (Button) findViewById(R.id.btn1);
        btn2 = (Button) findViewById(R.id.btn2);
        btn3 = (Button) findViewById(R.id.btn3);
        btn4 = (Button) findViewById(R.id.btn4);
        btn5 = (Button) findViewById(R.id.btn5);
        btn6 = (Button) findViewById(R.id.btn6);
        btn7 = (Button) findViewById(R.id.btn7);
        btn8 = (Button) findViewById(R.id.btn8);
        btn9 = (Button) findViewById(R.id.btn9);
        btnAdd = (Button) findViewById(R.id.btnAdd);
        btnDel = (Button) findViewById(R.id.btnDel);
        btnEqual = (Button) findViewById(R.id.btnEqual);
        btnInv = (Button) findViewById(R.id.btnInv);
        btnMul = (Button) findViewById(R.id.btnMul);
        btnPoint = (Button) findViewById(R.id.btnPoint);
        btnProc = (Button) findViewById(R.id.btnProc);
        btnSqr = (Button) findViewById(R.id.btnSqr);
        btnSqrt = (Button) findViewById(R.id.btnSqrt);
        btnSub = (Button) findViewById(R.id.btnSub);
        btn0.setOnClickListener(this);   //здесь описываю обработчик.(Аналогично делаю для всех остальных)
        
    }
Подскажите как сделать это. За ранее спасибо)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.07.2013, 21:28     Применение общего обработчика нажатия для всех кнопок на форме
Посмотрите здесь:

Android Обработка событий для массива кнопок
Android Программное создание обработчика события OnClick для button
setOnTouchListener для всех кнопок Android
3 ряда по 5 квадратных кнопок для выбора уровня Android
Одинаковые названия id для 2х кнопок Android
Android Как сделать, чтобы на всех дисплеях координаты кнопок были одинаковы?
Android Один обработчик для динамических кнопок
Android Доступ к контролу на форме из обработчика
Код для двух кнопок в одном активити Android
Обработка нажатия кнопок Android
Не работает onClickListener для одной из девяти кнопок Android
Android Обработка нажатия кнопок

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
V0v1k
1157 / 981 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
01.07.2013, 21:54     Применение общего обработчика нажатия для всех кнопок на форме #2
можно еще в с лаяута задавать
Java
1
android:onClick="onClick"
в активити
Java
1
2
public void onClick(View view){
}
можно в цикле задать
Java
1
2
3
4
5
6
7
8
List<View> list = new ArrayList<View>();
list.add(findViewById(R.id.btn0));
list.add(findViewById(R.id.btn1));
list.add(findViewById(R.id.btn2));
...
for(View view : list) {
        view.setOnClickListener(this);
}
также можно в цикле искать все кнопки вместо вызовов findViewById, в ViewGroup есть методы getChildCount() и getChildAt(int index) при помощи которых можно рекурсивно перебрать все View.

также можно в цикле получать id кнопки по имени

Java
1
2
3
4
for(int i = 0; i < 10; i++) {
     int viewId = this.getResources().getIdentifier("btn" + i, "id", this.getPackageName());
     findViewById(viewId).setOnClickListener(this);
}
strevg
1 / 1 / 0
Регистрация: 24.06.2013
Сообщений: 57
01.07.2013, 22:12  [ТС]     Применение общего обработчика нажатия для всех кнопок на форме #3
Большое спасибо))
Yandex
Объявления
01.07.2013, 22:12     Применение общего обработчика нажатия для всех кнопок на форме
Ответ Создать тему
Опции темы

Текущее время: 17:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru