0

アプリにスピナーがあります。スピナーで選択されたものは、セッション間で保持するのが最善であるためSharedPreferences、ユーザーの選択を保持するために使用しています。

必要なときにこの値を保存および取得する最良の方法はどれかわかりません。3 つの選択肢があると思います。

  1. リスナーSharedPreferencesのスピナーの更新。onItemSelected続行方法を選択するためにアプリで値を取得する必要がある場合は、 から値を取得しますSharedPreferences

  2. で更新SharedPreferencesonPause()ます。選択した値を取得する必要がある場合は、 を使用しますspinnerName.getSelectedItem()

  3. 両方の組み合わせ。SharedPreferences値の使用が必要な場合は、リスナーを使用して更新しますgetSelectedItem()(ええ、これについてはよくわかりません)。

これは私のスピナーに関連していますが、他の UI 要素についても同じことを考えていたので、アドバイスがあれば助かります。たとえば、1 つの方法の方が効率的ですか、それともより理にかなっていますか?

4

1 に答える 1

1

1人で行くなら

  1. 一度行うspinnerName.setOnItemSelected(this)と、すぐにリスナーメソッドが呼び出され、コールバック内の共有設定に値を保存するロジックがある場合、スピナーを初期化するロジックがonCreate()メソッドにある場合、おそらく不整合が発生する可能性があります共有設定値は、スピナーで選択されたデフォルト値に常にリセットされます

  2. 2 番目の選択肢を選択した場合、値を共有設定に保存するロジックは適切ですがspinnerName.getSelectedItem().、共有設定から値を直接取得するのとは対照的に、エラーが発生しやすくなります (ええ!共有設定から直接取得します。)

  3. コメントはありません :-P 真剣に

単純なプロセスを過度に複雑にする必要があるのはなぜですか。最終的にはこれがメンテナンスの悪夢に変わるべきではないためです。変数やメソッドがストリーミングされるとすぐに、本質的に些細なタスクのコードの臭いや複雑なロジックが発生する可能性があるからです。

複雑にしないでおく。

于 2013-07-04T17:37:31.377 に答える