Приветствую Вас ГостьВторник, 14.05.2024, 01:08

Каталог статей


Обработка событий

Как запрограммировать нажатие кнопки:

Чтобы нажатие кнопки что-то выполнялось, надо сначала создать обработчик (объект) который отслеживает событие нажатия (слушает). В это обработчике пишем исполняемый код. Затем этот обработчик устанавливаем нужному объекту на форме с помощью соответствующего метода.

Внутри  метода onCreate класса Activity создаем обработчик с помощью кода:

OnClickListener oclBtnOk = new OnClickListener() {
    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
 
    }
};

Устанавливаем обработчик для нужного объекта (кнопки)

btnOk.setOnClickListener(oclBtnOk);


OnClickListener - это объект, который слушает нажатие клавиши мыши

onClick - метод объекта, который мы переназначаем. Теперь у нас есть слушатель, который при нажатии кнопки мыши что-то делает

btnOk - это объект класса Button. У него есть метод setOnClickListener, который назначает нужного слушателя на событие нажатия кнопки

Есть вариант, когда запись будет более сокращенной:

      (findViewById(R.id.oclBtnOk)).setOnClickListener(new OnClickListener() {
      @Override
      public void onClick(View v) {
        ...;
      }

Здесь предварительно не надо объявлять переменную btnOk типа Button. Метод findViewById возвращает объект  типа View, у которого есть метод setOnClickListener, которым мы и воспользовались.

Можно назначить один обработчик для нескольких кнопок. Чтобы различать какая кнопка нажата, внутри метода onClick добавим оператор условного перехода с проверкой id переданного на вход объекта.

public void onClick(View v) {
   // по id определеяем кнопку, вызвавшую этот обработчик
   switch (v.getId()) {
   case R.id.btnOk:
     // кнопка ОК
     tvOut.setText("Нажата кнопка ОК");
     break;
   case R.id.btnCancel:
     // кнопка Cancel
     tvOut.setText("Нажата кнопка Cancel");
     break;
   }
 }

Использование одного обработчика экономит память.


Чтобы экономия была максимальной, то можно использовать метод OnClickListener  самого класса Activity.  для этого в строке создания класса указывается "implements OnClickListener". После добавления  данного текста внутри класса автоматически добавиться метод onClick.

В результате у объекта класса Activity  переназначаем не только метод onCreate(), но и метод onClick. Чтобы этот механизм работал нужно будет добавить импорт соответствующих описаний классов.

public class MainActivity extends Activity implements OnClickListener {
  
   TextView tvOut;
   Button btnOk;
   Button btnCancel;
  
   /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.main);
  
     // найдем View-элементы
     tvOut = (TextView) findViewById(R.id.tvOut);
     btnOk = (Button) findViewById(R.id.btnOk);
     btnCancel = (Button) findViewById(R.id.btnCancel);
  
     // присваиваем обработчик кнопкам
     btnOk.setOnClickListener(this);
     btnCancel.setOnClickListener(this);
   }
  
   @Override
   public void onClick(View v) {
     // по id определяем кнопку, вызвавшую этот обработчик
     switch (v.getId()) {
     case R.id.btnOk:
       // кнопка ОК
       tvOut.setText("Нажата кнопка ОК");
       break;
     case R.id.btnCancel:
       // кнопка Cancel
       tvOut.setText("Нажата кнопка Cancel");
       break;
     }
   }  
 }

Методы обработки события для разных типов интерфейсов могут отличаться, например, для элемента формы SeekBar (ползунок)  для обработки события изменения надо использовать implements OnSeekBarChangeListener.


Третий способ обработки события нажатия кнопки - это описать публичный метод внутри класса Activity и указать его в свойстве android:onClick.

Например:

В файле макета:

<Button
    android:id="@+id/btnStart"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick="onClickStart"
    android:text="start">
</Button>

В файле java 

public void onClickStart(View v) {
  // действия при нажатии на кнопку
}

 

Категория: Программирование | Добавил: robolen (04.11.2022)
Просмотров: 175 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Вход на сайт
Поиск
Категории раздела
Программирование [7]
Java [9]
Описание языка Java
API [0]
Примеры реализации задач [0]
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0