14

Android デバイスでアプリケーションをテストし、Android スマートフォンを横向きから縦向きに変えたところ、リスト ビューのすべてのリスト項目が消えてしまいました。

なんで?

管理方法は?

4

3 に答える 3

27

向きの変更中のAndroidのデフォルトの動作は、アクティビティを破棄して再作成することであるため、リスト項目が失われています。この動作は、特に新しい向きに使用できる新しいレイアウトで Android がアクティビティを再作成できるようにするために選択されています。

リスト項目が消えないようにするには、いくつかのことを行う必要があります。オリエンテーションの変更時に役立つ最初のことは、変更後に同じアクティビティを単純に再利用することです。これは、この行を追加することで実行できます

android:configChanges="keyboardHidden|orientation"

問題が発生しているマニフェストのアクティビティ タグに。これについては、この質問で詳しく説明しています。

あなたが説明した動作は、ユーザーがアクティビティを開いてアプリケーションをバックグラウンドに送信し、アプリケーションをメモリから削除してからアプリに再アクセスするために他の多くのメモリ負荷の高い処理を行う場合にも表示される可能性があります。この場合、アクティビティの onSaveInstanceState メソッドを上書きする必要があります。これについては、この質問で説明されています。

于 2010-05-25T08:01:09.310 に答える
6

最も簡単な方法はonSaveInstanceState、Januszの回答で説明されているを使用することです。

ただし、リストに多数のアイテムがある場合、それらをBundleinに保存すると、レクリエーションプロセスonSaveInstanceStateが遅くなる可能性があり、ユーザーはこれをラグとして経験します。Activity比較的大きなデータを保存するには、onRetainNonConfigurationInstanceを使用してから、でデータを再読み込みonCreategetLastNonConfugurationInstanceます。

于 2010-05-25T09:25:27.170 に答える
6

これをアクティビティに追加してみてください:

android:configChanges="向き|画面サイズ"

わたしにはできる

于 2014-11-25T09:44:42.107 に答える