OnItemSelectedListener画面の回転に呼びかけ
-
26-09-2019 - |
質問
私は、Androidの私の画面の向きを変更すると、スピナーからOnItemSelectedListenerが呼び出されます。
これは単なるエミュレーターではありません、それはまた、物理的な電話機で発生します。
私は発生からこれを停止することができますどのように?
乾杯ます。
解決
スピナーが常に選択されています。 OnItemSelectedListener
が最初に設定されている場合を含むSpinner
、の状態に変化があった場合にあなたのSpinner
が呼び出されます。通常の向きの変更は破棄され、再作成され、あなたの活動になります。あなたの活動は、最初の画面に表示されているとき、あなたのOnItemSelectedListener
が呼び出されている場合の向きが変更されたときに、それが再び呼び出されます。
私は発生からこれを停止することができますどのように?
あなたはそれができますかどうかを確認するために、あなたはsetOnItemSelectedListener()
に比べsetAdapter()
を呼び出したときのタイミングで遊ぶことができるかもしれません。
他のヒント
また、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) { }
});