2011-11-11 6 views
1

私はアプリを持っています。アプリを開いたときにいくつかのタブとログインダイアログが表示されます。私の問題は、電話機を回転させたときにレイアウトを変更したいのですが、アクティビティが破棄されてから再作成されてログインポップアップが再度発生することに気がつきました。アンドロイドのタブで向きの変更に関するレイアウトを変更しますか?

マニフェストで「KeyBoardHidden | orientation」を試しましたが、電話機を回転させたときにレイアウトを変更できません。

実行時にアンドロイドプラットフォームのビューを強制的に更新する方法はありますか?

+0

KeyBoardHidden | orientationを使用し、レイアウトを自動回転できるようにする必要があります。 onConfigurationChangedを上書きしますか? – Janusz

+0

私は、アクティビティをレイアウトにリフレッシュさせる方法を理解しようとしています。私は現在、オリエンテーションが変更されたときにonConfigurationChangedをオーバーライドし、マニフェストでKeyBoardHiddenの向きを使用することで、トーストメッセージを作成できます。 –

+0

このような問題に対する解決策ではありませんが、これに対処するための代替方法として、SharedPreferencesにユーザーがログインしているかどうかを保存するだけです。ログインダイアログを表示する必要がある場合は、単に起動を決定することができます。 –

答えて

0

KeyBoardHidden | orientationを使用してレイアウトを自動回転させることができます。

トーストを作成するメソッドでsuper.onConfigurationChangedを呼び出す必要があります。 アクティビティは現在のレイアウトを取り、それを回転します。これは、レイアウトランドとデフォルトレイアウトフォルダの2つの異なるレイアウトファイルを持っている場合、これはあなたに正解を与えないことを意味します。

2つの異なるレイアウトファイルを使用している場合、アクティビティはそれ自身を破壊し、onCreateのレイアウトをゼロから再作成する必要があります。このためには、onSaveInstanceStateを上書きする必要があります。 onSaveInstanceStateには、ダイアログがユーザに提示されたかどうかを判断するブール値を格納するために使用できるBundleがあります。このバンドルは、アクティビティが再作成された後にonCreateメソッドに渡されます。次に、ブール値を抽出してダイアログが表示されているかどうかを確認することができない場合は、onCreateに提供されているバンドルがnullかどうかを確認します。

+0

いくつかのバグを修正して構文を正しくしてからうまくいきます:)ありがとう.. –

関連する問題