在Fragment中重写两个方法onCreateView和onDestroyView,并在onDestroyView方法中清除Fragment视图的所有资源。
示例代码:
public class MyFragment extends Fragment {
private View rootView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
if (rootView == null) {
rootView = inflater.inflate(R.layout.my_fragment_layout, container, false);
// initialize views
} else {
// Avoid reloading views unnecessarily
ViewGroup parent = (ViewGroup) rootView.getParent();
if (parent != null) parent.removeView(rootView);
}
return rootView;
}
@Override
public void onDestroyView() {
super.onDestroyView();
if (rootView != null) {
ViewGroup parent = (ViewGroup) rootView.getParent();
if (parent != null) parent.removeView(rootView);
rootView = null;
}
}
}
在onCreateView方法中,首先检查rootView是否为null。如果是,将视图初始化。如果不是,则检查它是否有父视图(容器)并将其从中删除。这样可以避免重新加载视图。
在onDestroyView方法中,删除rootView的所有父元素,并将其设置为null。这样可以保证在Fragment被销毁时,视图也会被销毁。
上一篇:AndroidOnApplyWindowInsetsListener/isAppearanceLightStatusBars/sharedelementtransitionbugonAPI28