私はこれを行う方法の KISS の例を探していましたが、それらはすべて簡単に見えますが (そして私はそれらすべてを調べました!)、それでも概念を理解することはできません。私はカスタム リスナー (何も拡張しないもの) を参照しています...特に、値が変更されたときにいくつかのメソッドをオフに設定できるように、ブール変数のリスナーを作成します。
これは私が試した例の例です: 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();
}
}
これで、アクティビティが開始されると、Toast は boo... great の状態を表示します。問題は、これが onCreate 内でのみ発生することです。これは、.somethingChanged がそこに配置されているため意味があります。私が望むのは、onCreate 内にあるかどうかに関係なく、boo が false から true に、true から false に変更されるたびに Toast が生成されることです。すなわち:
- ボタンをクリック
- boo を false から true に変更します。
- リスナーは変更を検出し、onChange にあるものをすべて実行します
ボタンactionListenerを使用してこれを行うことができることは知っていますが、可能であればこれを避けたいと思います。現時点では不可能だと思い始めています。
どんな洞察も大歓迎です。前もって感謝します!