savedInstanceState()
を使用してフラグメントを削除するときに状態を保存してから、そのフラグメントをバックスタックからポップするときの状態を復元できますか?バックスタックからフラグメントを復元すると、savedInstanceStateバンドルは常にnullです。savedInstanceStateバックスタックからフラグメントを復元するとき
現在、アプリケーションのフローは次のようになります。フラグメントの作成 - >フラグメントの削除(バックスタックへの追加) - >フラグメントがバックスタックから復元されました(savedInstanceStateバンドルがnullです)。私は、問題が削除されると、スタックをバックアップするために追加されたときonSavedInstanceState()
が呼び出されないことだと思います
public void onActivityCreated(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle bundle = getArguments();
Long playlistId = bundle.getLong(Constants.PLAYLIST_ID);
int playlistItemId = bundle.getInt(Constants.PLAYLISTITEM_ID);
if (savedInstanceState == null) {
selectedVideoNumber = playlistItemId;
} else {
selectedVideoNumber = savedInstanceState.getInt("SELECTED_VIDEO");
}
}
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt(Constants.SELECTED_VIDEO, selectedVideoNumber);
}
:ここ
は、関連するコードです。 onsavedInstanceState()を使用できない場合、これを修正する別の方法がありますか?
多くの感謝を:) ITSは、これは良いアイデアです –
わからない私の問題を解決しました。これは、参照を保存するとメモリが解放されるという見解を破壊するという目的を打破しますか? – craigrs84
私は実際にはわかりませんが、私は直接テストを行っていません。しかし、私の思考はこのようになります。あなたのレイアウトのすべての要素を初期化するときは、これらの要素の大部分をグローバル変数として設定するのが標準です。上記の例では参照のためにベースビューをリサイクルできない場合、Androidはリサイクルできませんこれらのビューのいずれかを使用すると、メモリと同じ問題が発生します。 – AllDayAmazing