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

Программирование Android

Войти
Регистрация
Восстановить пароль
 
strevg
1 / 1 / 0
Регистрация: 24.06.2013
Сообщений: 57
#1

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

01.07.2013, 21:28. Просмотров 920. Ответов 2
Метки нет (Все метки)

Добрый день.
Как можно сделать так, чтобы ко всем кнопкам на экране ,применялся один обработчик.
Я знаю, что можно прописать каждой кнопке этот обработчик, но можно ли это сделать сразу для всех, из принципа чтобы было более эффективно и меньше кода писать.
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     Применение общего обработчика нажатия для всех кнопок на форме
Посмотрите здесь:

setOnTouchListener для всех кнопок - Программирование Android
Пытаюсь ловить у кнопок MotionEvent.ACTION_DOWN и MotionEvent.ACTION_UP. btn1.setOnTouchListener(new View.OnTouchListener() { ...

Доступ к контролу на форме из обработчика - Программирование Android
на форму кинул две кнопки и один эдит, как мне из обработчика кнопки получить этот эдит? оно его не видит почему то...

Обработка нажатия кнопок - Программирование Android
Всем привет! Целый день мучала проблема. Что имею: телефон по bluetooth подключается к arduino и передает туда байты, в дуине это...

Обработка нажатия кнопок - Программирование Android
Здравствуйте! Недавно начал изучать программирование под Android. Узнал что для обработки нажатия кнопок используется как минимум 2...

Поменять цвет кнопок, не убрав анимацию нажатия - Программирование Android
Ребята, как это сделать? http://savepic.ru/13462938.jpg Как видите, текст в кнопках белый, а кнопки - синие и зелёные. Если задать...

Как сделать, чтобы на всех дисплеях координаты кнопок были одинаковы? - Программирование Android
Всем привет. подскажите пожалуй , создал игру подобие найди кота , закачек много ,но на каждем дисплее android:background="" кнопки в...

Программное создание обработчика события OnClick для button - Программирование Android
Иметься кнопка, которая создается самим пользователем Код создания кнопки: public void CreateButton() { LinearLayout...

Одинаковые названия id для 2х кнопок - Программирование Android
Пишу приложение и там есть 2 xml файла,что то типа диалога,там я ввожу данные элемента которого хочу добавить в БД,так вот у меня на каждом...

Обработка событий для массива кнопок - Программирование Android
Здравствуйте. У меня в программе создается массив из N ImageButton. и для каждой кнопки нужно обработать событие нажатия. //это...

Один обработчик для динамических кнопок - Программирование Android
Кнопки создаются/удаляются, и у них один OnClickListener. Но при нажатии, надо получить текст именно с той кнопки на которую нажали. Как...

3 ряда по 5 квадратных кнопок для выбора уровня - Программирование Android
Не могу понять как такое сделать. Даже квадратные кнопки сделать не могу. Нагуглил некоторые решения(квадратных кнопок), но они...

Код для двух кнопок в одном активити - Программирование Android
Здравствуйте, я создал кнопку(в активити1), при нажатии на которую происходит переход на активити2. Но тут возник вопрос, как создать...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
V0v1k
1158 / 982 / 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     Применение общего обработчика нажатия для всех кнопок на форме
Ответ Создать тему
Опции темы

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