我几乎没有通过活动的片段管理器替换的主要片段。所有这些主要片段内部都有嵌套片段,并且使用子片段管理器进行管理。
从 backstack 导航回来时,我需要保留嵌套片段的小部件的屏幕状态(如滚动位置、EditText 值...)。我在其他一些stackoverflow帖子上发现我应该重用创建的视图来实现这一点。
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 Guide 在它的指南中只提供了片段的简单示例。