この投稿は、よく議論されている人気のあるトピックである、画面の向きの処理に関するものです。よく話題になっていますが、アプリの実用的なソリューションを描くことはほとんどできず、ここに書く必要がありました.
というわけで、アプリは基本的にTabHostを使ったタブで構成されています。各タブはアクティビティ グループです。このアプリは、主に AsyncTask を使用して Web サービスからデータをフェッチします。各子アクティビティは、UI ハンドラー オブジェクトを保持する AsyncTask にアタッチされます。このオブジェクトは、アラート メッセージの表示や listView アダプターのアタッチなど、UI 関連のすべてのアクションを表示します。
たとえば、アクティビティから asynctask を呼び出すには、次のようにします。
UIHandler handler = new UIHandler(this, getParent()) //parent context of the tab
CustomAsyncTask taskRunner = new CustomAsyncTask(handler);
taskRunner.execute(params);
明らかに機能しなかったインスタンス状態の保存と復元を使用してみました。私のシナリオで構成を使用するのは紛らわしいと思います。
スタンドについて説明したことを願っています。抜け道を提案できますか?
ノート:
シーンをサポートするために詳細を提供する必要があるかどうか教えてください.
現在の処理方法:
ほとんどの画面に単一のレイアウトがあります。マニフェスト ファイルの 1 行でうまく機能します。
android:configChanges="keyboard|keyboardHidden|orientation"
しかし今では、それぞれの向きに 1 つずつ、2 つのレイアウトを持つ 2 つの画面を取得しました。
編集
カスタム アダプターを使用する ListView があります。サーバーからデータをフェッチすると、UI ハンドラーは listView を適切にロードします。
カスタム アダプターの getView() では、行レイアウトにレイアウト xml を使用します。
public View getView(int position, View convertView, ViewGroup parent) {
convertView = mInflater.inflate(R.layout.custom_fullpicturerow, null);
}
向きの変更時に、上記のレイアウトを変更して新しいレイアウトをロードするにはどうすればよいですか?