アクティビティのフラグメント マネージャーを介して置き換えられるメイン フラグメントはほとんどありません。これらのメイン フラグメントはすべて内部にネストされたフラグメントを持ち、これらは子フラグメント マネージャーを使用して管理されます。
backstackから戻るときに、ネストされたフラグメントのウィジェットの画面状態(スクロール位置、EditText 値など)を保持する必要があります。それを達成するには、作成したビューを再利用する必要があると言っている他のスタックオーバーフローの投稿を見つけました。
View view = null;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if (view == null) {
view = inflater.inflate(R.layout.fragment_layout, container, false);
// other initializations here
} else {
((ViewGroup) view.getParent()).removeView(view);
}
return view;
}
それは最善のアプローチではないと感じており、より大きなアプリケーションではメモリを大量に消費する可能性があります。Androidガイドではフラグメントの簡単な例しか提供されていないため、正しい解決策はわかりません。