Android デバイスでアプリケーションをテストし、Android スマートフォンを横向きから縦向きに変えたところ、リスト ビューのすべてのリスト項目が消えてしまいました。
なんで?
管理方法は?
Android デバイスでアプリケーションをテストし、Android スマートフォンを横向きから縦向きに変えたところ、リスト ビューのすべてのリスト項目が消えてしまいました。
なんで?
管理方法は?
向きの変更中のAndroidのデフォルトの動作は、アクティビティを破棄して再作成することであるため、リスト項目が失われています。この動作は、特に新しい向きに使用できる新しいレイアウトで Android がアクティビティを再作成できるようにするために選択されています。
リスト項目が消えないようにするには、いくつかのことを行う必要があります。オリエンテーションの変更時に役立つ最初のことは、変更後に同じアクティビティを単純に再利用することです。これは、この行を追加することで実行できます
android:configChanges="keyboardHidden|orientation"
問題が発生しているマニフェストのアクティビティ タグに。これについては、この質問で詳しく説明しています。
あなたが説明した動作は、ユーザーがアクティビティを開いてアプリケーションをバックグラウンドに送信し、アプリケーションをメモリから削除してからアプリに再アクセスするために他の多くのメモリ負荷の高い処理を行う場合にも表示される可能性があります。この場合、アクティビティの onSaveInstanceState メソッドを上書きする必要があります。これについては、この質問で説明されています。
最も簡単な方法はonSaveInstanceState
、Januszの回答で説明されているを使用することです。
ただし、リストに多数のアイテムがある場合、それらをBundle
inに保存すると、レクリエーションプロセスonSaveInstanceState
が遅くなる可能性があり、ユーザーはこれをラグとして経験します。Activity
比較的大きなデータを保存するには、onRetainNonConfigurationInstanceを使用してから、でデータを再読み込みonCreate
しgetLastNonConfugurationInstance
ます。
これをアクティビティに追加してみてください:
android:configChanges="向き|画面サイズ"
わたしにはできる