Szukałem przykładu KISS, jak to zrobić, i choć wszystkie wydają się (i przeszedłem przez nich WSZYSTKO!) Wystarczająco proste, wciąż nie mogę się pogubić Koncepcja. Odnoszę się do niestandardowych detektorów (takich, które niczego nie rozszerzają) ... W szczególności, tworzenie detektora dla zmiennej boolowskiej, tak, że mogę ustawić niektóre metody, gdy zmienia się jej wartość.Android: Słuchanie zmian zmiennych
ten jest przykładem przykład Próbowałem: android how to make listener to a custom variable?
Jeśli ktoś ma czas, aby wyjaśnić niestandardową słuchacza i jak to działa w prostym języku angielskim, które byłyby mile widziane. Mam nadzieję, że kiedy zrozumiem dokładnie, jak słuchacz zostanie powiadomiony o zmianie, będę mógł stworzyć własne i zrozumieć, jak to cholerstwo działa. To daje mi ból głowy ... Dzięki z góry
Oto gdzie jestem w tej chwili:
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);
}
}
}
Jest to obraz mojej głównej działalności:
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();
}
}
Teraz, gdy zaczyna się aktywność, Toast wyświetla stan boo ... świetny. Problem polega na tym, że dzieje się tak tylko w onCreate, co ma sens, ponieważ jest tam umieszczone coś. Chciałbym, żeby toast był generowany za każdym razem, gdy boo zmienia się z fałszu na prawdziwe, a prawda na fałsz, niezależnie od tego, czy jest to w środku naCreate czy nie. Tj:
- Kliknij przycisk
- Przyczyny boo zmienić z false na true
- Listener odbiera na zmianę i działa, co jest w onChange
wiem, może po prostu użyć Aby to zrobić, należy wykonać akcję, ale chciałbym trzymać się z dala od tego, jeśli to możliwe, co w tej chwili zaczynam myśleć, że jest niemożliwe.
Każdy wgląd byłby mile widziany. Z góry dziękuję!
Rozważam użycie prostych metod setX/getX do zmiany wartości i przesunięcia innych metod.Prawdopodobnie będzie to wystarczające, ale wciąż uważam, że moje pierwotne żądanie ma dużą wartość, jeśli jest to możliwe w Javie. Komentarze/rozwiązania wciąż doceniane. Dzięki – user1977217