次の問題をどのように処理するのか疑問に思っています。結果は、2つのスピナーが選択したアイテムに応じて計算されます。UIを処理するために、つまり、ユーザーがスピナーの1つで新しいアイテムを選択するために、アクティビティのメソッドでsetOnItemSelectedListener
スピナーに使用するリスナーをインストールします。onCreate()
さて、もちろん、それは問題なく機能します。リスナーの作業は、結果の新しい計算をトリガーすることです。
onPause()
onResume()
問題:最後の状態を保存/復元するためにインターセプトするため、次のように、これら2つのスピナーの選択されたアイテムをプログラムで設定するメソッドを取得しました。
startSpinner.setSelection(pStart);
destSpinner.setSelection(pDest);
これらの2つの呼び出しも、リスナーを呼び出します。結果の計算方法と新しい結果セットの通知は、ここで2回呼び出されます。
これに対する愚かな直接的なアプローチは、ブール変数を使用して、リスナーが内部で行うことをすべて無効にし、選択した項目を設定する前に設定し、後でリセットすることです。わかった。しかし、もっと良い方法はありますか?
リスナーがコード(アクション)によって呼び出されるのは望ましくありません。ユーザーアクションによってのみ呼び出されます。:-(
どうしますか?ありがとう!