質問

私は、Androidの私の画面の向きを変更すると、スピナーからOnItemSelectedListenerが呼び出されます。

これは単なるエミュレーターではありません、それはまた、物理的な電話機で発生します。

私は発生からこれを停止することができますどのように?

乾杯ます。

役に立ちましたか?

解決

スピナーが常に選択されています。 OnItemSelectedListenerが最初に設定されている場合を含むSpinner、の状態に変化があった場合にあなたのSpinnerが呼び出されます。通常の向きの変更は破棄され、再作成され、あなたの活動になります。あなたの活動は、最初の画面に表示されているとき、あなたのOnItemSelectedListenerが呼び出されている場合の向きが変更されたときに、それが再び呼び出されます。

  

私は発生からこれを停止することができますどのように?

あなたはそれができますかどうかを確認するために、あなたはsetOnItemSelectedListener()に比べsetAdapter()を呼び出したときのタイミングで遊ぶことができるかもしれません。

他のヒント

画面を回転させたときのAndroidは、それが回転する前に何であったかに位置を設定してスピナーのselectedItemPositionは、ゼロでない場合は、

また、2回目の呼び出しを取得します。使用onSaveInstanceStateはどれもゼロ位置にスピナーの数をカウントし、カウントがゼロまでデクリメントされるまでOnItemSelectedコードだけを返すように、このカウントを使用します。

またView.GONEの可視性を持つことができますスピナーに非常に注意する必要があります。私はこれらをどのように処理するかを正確に記述するための時間を見つけることができたときに、私はここにいくつかのより多くのテキストを追加します。

ビューがそのよう、ヌル内部のOnItemSelectedListener方法ではないことを検証する必要があるので、スピナーはそのアダプタが含まれています前に、

OnItemSelectedが呼び出されます:

spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
  @Override public void onItemSelected (AdapterView<?> parent, View view, int position, long id){
    if(view != null) { // <- here is the validation
      // Your code to do something with the selected item
    }
  }
  @Override public void onNothingSelected(AdapterView<?> parent) { }
});
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top