Я искал пример KISS, как это сделать, и пока все они кажутся (и я прошел через них ВСЕ!) достаточно простыми, я все еще не могу понять свою концепцию. Я имею в виду пользовательские слушатели (те, которые не распространяются)... В частности, создание слушателя для логической переменной, чтобы я мог отличать некоторые методы при изменении значения.
это пример примера, который я пробовал: android как сделать прослушиватель настраиваемой переменной?
Если у кого-то есть время, чтобы объяснить пользовательский слушатель и как он работает на простом английском языке, это было бы высоко оценено. Я надеюсь, что как только я точно пойму, как слушатель будет уведомлен об изменении, тогда я смогу создать свою собственную и понять, как это чертовски работает. Это дает мне головную боль... Спасибо заранее
Вот где я сейчас нахожусь:
public class ChangeListener {
boolean boo = false;
public ChangeListener(boolean b){
boo = b;
}
private listener l = null;
public interface listener{
public void onChange(boolean b);
}
public void setChangeListener(listener mListener){
l = mListener;
}
public void somethingChanged(){
if(l != null){
l.onChange(boo);
}
}
}
Это снимок моей основной деятельности:
public class Main extends Activity implements ChangeListener.listener{
private ChangeListener listener;
private boolean boo = false;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
listener = new ChangeListener(boo);
listener.setChangeListener(this);
listener.somethingChanged();
}
@Override
public void onChange(boolean b) {
// TODO Auto-generated method stub
Toast.makeText(this, "REST = "+b, Toast.LENGTH_SHORT).show();
}
}
Теперь, когда начинается действие, Toast отображает состояние boo... отлично. Проблема в том, что это происходит только внутри onCreate, что имеет смысл, так как там помещается .somethingChanged. Я хотел бы, чтобы Toast генерировался каждый раз, когда boo изменен с false на true и true на false, независимо от того, находится ли он внутри onCreate или нет. То есть:
- Нажмите кнопку
- Приводит boo к изменению с false на true
- Слушатель выбирает изменения и запускает все, что находится в onChange
Я знаю, что могу просто использовать кнопку actionListener, чтобы сделать это, но я хотел бы держаться подальше от этого, если это возможно, что на момент, когда я начинаю думать, невозможно.
Любое понимание было бы очень оценено. Спасибо заранее!