public abstract class LazyLoadFragment extends Fragment {
private boolean isVisible = false; // 标记Fragment是否可见
private boolean isDataLoaded = false; // 标记数据是否已经加载
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
// 更新Fragment的可见状态
this.isVisible = isVisibleToUser;
// 如果Fragment可见且数据未加载,则尝试加载数据
if (isVisible && !isDataLoaded) {
lazyLoad();
isDataLoaded = true;
}
}
// 抽象方法,具体的Fragment需要实现这个方法来完成数据加载
protected abstract void lazyLoad();
// 其他Fragment生命周期方法可以根据需要重写
@Override
public void onDestroyView() {
super.onDestroyView();
// 当Fragment的视图被销毁时,重置数据加载状态(可选)
isDataLoaded = false;
}
// ... 其他可能需要的Fragment生命周期方法和辅助方法
}
public class MyFragment extends LazyLoadFragment {
@Override
protected void lazyLoad() {
// 在这里执行数据加载操作,比如网络请求、数据库查询等
// ...
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// 创建并返回Fragment的视图
return inflater.inflate(R.layout.fragment_my, container, false);
}
// 其他Fragment生命周期方法...
}
百度AI搜索 - 办公学习一站解决