我一直在尋找一個如何做到這一點的KISS例子,雖然他們都似乎(我經歷了他們所有!)足夠簡單,我仍然無法讓我的頭這個概念。我指的是自定義偵聽器(不擴展任何東西)...特別是,創建一個布爾變量的偵聽器,以便在其值更改時引發一些方法。Android:聽變化的變化
這是我試過的例子的一個例子: android how to make listener to a custom variable?
如果有人有時間來解釋一個自定義的監聽器,它的工作原理簡單的英語,這將是非常讚賞。我希望一旦我明確瞭解了聽衆如何得到改變的通知,那麼我就可以創建自己的並瞭解該死的事情是如何工作的。這讓我頭疼......在此先感謝
這裏就是我在此刻:
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();
}
}
現在,當活動開始時,吐司顯示噓聲的狀態...很好。問題是這隻發生在onCreate中,這是有道理的,因爲.somethingChanged被放置在那裏。我希望每次boo從false變爲true時都會生成Toast,並且無論onCreate是否爲false,都會生成Toast。即:
- 點擊一個按鈕
- 原因噓從假更改爲真
- 監聽器上的變化拿起並運行無論是在的onChange
我知道我可以只使用按鈕actionListener來做到這一點,但如果可能的話,我想遠離這一點,目前我開始認爲這是不可能的。
任何有識之士將不勝感激。提前致謝!
我正在考慮使用簡單的setX/getX方法來改變值和其他方法。這可能會是足夠的,但我仍然認爲,如果可以在Java中執行,我的原始請求具有很大的價值。評論/解決方案仍然感激。謝謝 – user1977217