Мне нраиться в Android его собитийность и множество функций, отрабатывающих при наступлении события. Вот например обьявление функции для обработки нажатий пунктов меню:
public boolean onOptionsItemSelected(MenuItem item)
На вход получаем параметр в котором лежит пункт меню.
Но как создать свое событие?
Рассматривать будем на примере создания персонажа для несуществующей игры. У нас будет два класса MainActivity и Pers. Класс Pers - модель персонажа за которого мы играем. В нем будем хранить здоровье, ману ну и любые другие данные, которые будут необходимы. Создадим событие onHungry для нашего персонажа. Это событие будет вызываться когда параметр голод будет меньше, например 40%.
Код класса Pers:
package com.example.game.models;
import android.app.Activity;
public class Pers {
private final Activity activity;
private int hungry;
private listener l = null;
public Pers(Activity activity) {
this.activity = activity;
}
public int getHungry() {
return hungry;
}
public void setHungry(int hungry) {
this.hungry = hungry;
if (this.hungry == 40) {
hungry();
}
}
public void setChangeListener(listener mListener) {
l = mListener;
}
private void hungry() {
if (l != null) {
l.onHungry(activity);
}
}
public interface listener {
void onHungry(Activity activity);
}
}
У нас есть 3 свойства:
Внутри класса создаем интерфейс с именем listener в котором определяем метод onHungry, его мы будем переопределять в MainActivity. А в сеттере setHungry смотрим на сколько сыт наш персонаж, и, если еды осталось 40% говорим создать событие onHungry через функцию hungry(). Теперь, если гдето в логике работы приложения вызвать конструкцию
<span style="font-family: 'DejaVu Sans Mono';