Androidアプリ(またはもっと一般的にはJavaであれば違いはありません)では、変数の値が変わるたびにメソッドを呼び出す最良の方法は何ですか?Androidでは、変数が変更されたときにどのように行動しますか?
答えて
あなたが本当にやりたいことは、イベントが発生したときに、リスナーをトリガーするイベント駆動型モデルを設定されている(あなたのケースでは、変数の値が変更されたと言います)。
:通常、これは、次の手順を実行することによって行われ(それだけで、そのために、必ずしもではないが)、これは特にUIプログラミングの文脈でだけでなく、Java用のが、他のプログラミング言語のためだけでなく、非常に一般的です
- イベントがトリガーされた場合にリスナーが実装するインターフェイスを決定します。あなたはリスナーがここに扱うことが重要だと思う任意の引数を置くことができ
public interface VariableChangeListener {
public void onVariableChanged(Object... variableThatHasChanged);
}
:あなたのケースのために、あなたはとしてVariableChangeListenerそれを呼び出すとインタフェースを定義することができます。インターフェイスに抽象化することで、イベントが発生しているクラスとの緊密な結合なしに、変数が変更された場合に必要なアクションを実装する柔軟性が得られます。
- イベントが発生したクラス(変数の変更可能なクラス)で、イベントのリスナーを登録するメソッドを追加します。あなたのインターフェイスVariableChangeListenerを呼び出した場合、あなたはデフォルトでは、このような
// while I only provide an example with one listener in this method, in many cases
// you could have a List of Listeners which get triggered in order as the event
// occurres
public void setVariableChangeListener(VariableChangeListener variableChangeListener) {
this.variableChangeListener = variableChangeListener;
}
などの方法がありますイベントイベントの場合には
- を聞いて誰もありません(変数が変更された)が発生しました、あなたはその後、リスナーをトリガする、コードが
if(variableValue != previousValue && this.variableChangeListener != null) {
// call the listener here, note that we don't want to a strong coupling
// between the listener and where the event is occurring. With this pattern
// the code has the flexibility of assigning the listener
this.variableChangeListener.onVariableChanged(variableValue);
}
再びトンのようなもののようになります。彼は基本的にイベントや変数の変化に反応するようプログラミングするのは非常に一般的な方法です。 Javascriptではこれはonclick()の一部として表示され、OnClickListenerなどのさまざまなリスナーのイベント駆動モデルを確認して、Button onclickイベントに設定することができます。あなたのケースでは、変数が変更されたときにいつも異なるイベントに基づいてリスナーをトリガーします。
私は考えています*あなたはこの説明でリスナーに私のために最後にペニーが落ちるのを手伝ったかもしれません。このページはブックマーク中です! –
メソッド 'setVariableChangeListener'を呼び出す必要があるとき、誰かが説明できますか? 'VariableChangeListener'はインターフェースなので、' setVariableChangeListener'には何が渡されますか? – AvP
このようにすることができます。あなたが望むものを正確に定義していないため、動作する可能性があります。あなたの変数名がvであると仮定してください。前のv = vを作る; 。あなたはあなたの条件に応じて、あなたのコードに入れることができます。
if(v!=previous_v){
//your stuffs
}
これはうまくいきません。なぜなら、それが一度しかチェックされなかったら再びチェックしないからです。著者は、バックグラウンドwhileループのように変数が変更されたときを知りたいと思っています。 –
- 1. 変数が変更されたときにどのようにブレークすることができますか?
- 2. 変数の値が変更されたときは、どのように確認できますか?
- 3. C#で変数の値が変更された場合、どのようにコードを実行できますか?
- 4. オリエンテーションが変更されたときのレイアウトの変更はどのように処理されますか?
- 5. エバーサービス変数が変更された場合、コンポーネントオブザーバはどのように変更されますか
- 6. Androidが変数を変更したときにコードを実行
- 7. 最近変更された行はどのようにして見つけることができますか?
- 8. どのように動的にAnsible変数を変更できますか?
- 9. 再帰関数の変更はどのように変更され、結果を変更しますか?
- 10. Android 4.1.1でNETWORK_PROVIDERの動作が変更されましたか?
- 11. 別のスレッドで変更したときに変数が変更されないのはなぜですか?
- 12. 変数が設定されたときに変数値が変更される
- 13. 関数は呼び出されずに変数をどのように変更しましたか?
- 14. 参照が変更されたときに元のオブジェクトを変更しないようにするにはどうすればよいですか?
- 15. static int変数が変更されたときにイベントをトリガしますか?
- 16. Xは変数ですが、キャストしようとしたときに型のように使用されます
- 17. サービスでプロパティが変更されたときは、どのように検出できますか?
- 18. TCLで変数が変更されたときに特定のアクションを実行
- 19. コンテナのサイズが動的に変更されたときにcanvasjsグラフのサイズを変更するにはどうすればよいですか?
- 20. モデルが変更されたときの変数の変更
- 21. 変数がフィールドに変更されたときに、スタックをヒープに変更するプロセスは何ですか?
- 22. 変数が更新されたときに変数のパラメータが変更された関数
- 23. iCloudでファイルが変更されたときは、どのように検出しますか?
- 24. ノードオブジェクトの状態が変更されたときに動的にJTreeビューを変更するにはどうすればよいですか?
- 25. 関数に渡されたときに元のdata.tableが変更されないようにします。
- 26. 複数の行をtxtからどのように変更できますか
- 27. どのようにしてターゲット変数を変更できますか?
- 28. 配列のプロパティが変更されたときにどのように通知されますか?
- 29. 動的リンクボタンがクリックされたときに変数を更新します
- 30. 向きが横向きに変更されたときにAndroidのロケールが変更される
変数を変更するコードがいくつかある必要があります。 –
変数が変更されたときにアクセスする必要があるオブジェクトは、変数を変更するコードのスコープ内にないためです。 – tsvallender