2011-07-25 12 views
1

this questionには、スピナーの位置を変更して別のスピンのエントリーを変更する方法があります。しかし、今私は私の携帯電話でそれをデバッグしているとき、私は、私は画面を回転させると、最初のスピナーは右にとどまるが、2番目の2つの位置が0に戻って変更することを認識します。私は完全に向きを処理したいとは思わない私自身で変わるので、どうすればこの問題を回避できますか?オリエンテーションの変更によってスピナーの位置が変更される

+0

それは一種のこれが起こるという意味を持たず、OSは、とき向きの変更アクティビティの状態を再構築するが、最初のスピナーの位置を変更すると、次の二つのアダプタを変更することがありその位置を0に戻します。 – MarioAran

答えて

2

必要なのは、onSaveInstanceStateのバンドルに情報をいくつか保存し、それをOnRestoreInstanceStateで読み込み(それに応じてスピナーを設定する)だけです。

良い説明はここにある:Saving Android Activity state using Save Instance State

+0

私は3つのスピナーの位置、EditTextのテキスト、ListViewの項目などをすべて保存する必要がありますか? – MarioAran

+0

いいえ、何もする必要はありません(テキスト、x-y位置などを保存してください)。選択した項目以外のUI要素はすべて存在し、その状態は保持されます。保存する必要があるのは、スピナーごとに選択されたIDまたは項目です(スピナーが何を表しているかによって異なります)。横向きのレイアウトを変更して向きに合わせてほしいと思うかもしれませんが、それは別の問題です。 – aha

+0

さて、スピナーが選択したアイテムの位置を取得するにはどうすればいいですか? 'savedInstanceState.putInt(" spinner1Pos "、spinner1.getSelectedItemPosition());'と入力しようとしましたが、 'spinner1'は解決できません... – MarioAran

0

Setting the background of an Activity

、ここでこの質問を参照してください答えのコードを使用して、あなたのニーズに合わせてスピナーの向きを変更します。

+0

しかし、スピンナーの位置、EditTextのテキスト、および動的に作成されたListViewのすべての要素を処理することはできません。 ああ、位置によって、私はレイアウトの位置ではなく、選択した項目のインデックスを意味します。 – MarioAran

+0

ああ..すいません。私はレイアウトの位置を得ました。既存のデータでスピナーを再投入してみてください。その後、あなたはスクランブルされたポジションに対処する必要はありません。 –

関連する問題