1

ここの Google の例に従って、フラグメントに基づいてアプリを開発しました。

私のメイン アクティビティには、タイトルのリスト フラグメントと、ランドスケープ モードで作成された場合は詳細フラグメントが含まれます。アプリが縦向きモードで開始された場合、メイン アクティビティにはリスト フラグメントのみが含まれ、リスト アイテムがクリックされると、詳細フラグメントを表示する新しいアクティビティが開始されます。

ポートレイトまたはランドスケープ モードのいずれかにとどまると、すべて正常に動作します。しかし、向きを変えるとすぐに、複数の問題が発生します。

1 番目の問題:縦向きモードで開始してから横向きモードに変更すると、アクティビティがアクティビティ スタックに 2 回追加され、アプリを閉じるために [戻る] ボタンを 2 回押す必要があります。これが Google が望んでいる方法だとは想像できません。どうすればこれを回避できますか?

2 番目の問題:ランドスケープ モードからポートレート モードに変更すると、現在選択されているアイテムの詳細フラグメントではなく、リストが表示されます。したがって、詳細フラグメントのすべてのユーザー入力が失われます。これは面倒で、これを処理する方法がわかりません。すべてのアクティビティで、方向の変更をプログラムで気にする必要がありますか?

3 番目の問題:ランドスケープ モードでn 個の詳細を切り替えると、ポートレート モードに変更するとすぐに、バック ボタンをn回押して追加を閉じる必要があります。もう)。向きを変更する場合、バック スタックを自分でクリーニングする必要がありますか?

4

1 に答える 1

-1

アクティビティについては、1 つのことがあります。つまり、方向を変更すると、次の操作を行わない限り、アクティビティが再起動します。

-まず、これをマニフェスト (アクティビティ タグ内) に追加します。これにより、方向を変更した場合にアプリケーションに何をすべきかを伝えることができます。

android:configChanges="orientation"

-次に、向きが変わった場合に何かする必要がある場合に備えて、次のメソッドを実装します。そうでない場合、ユーザーがデータを失うことはありません。

onOrientationChanged (int orientation)
于 2012-09-30T19:28:41.097 に答える