onActivityCreated已被废弃,对应的替代方法是什么?相关代码该如何改写?
onActivityCreated 废弃替代方案及代码重写 onActivityCreated 从AndroidX Fragment 1.3.0版本起正式废弃,官方不再推荐使用。你当前的代码是完成Fragment关联Activity中ListView的初始化与适配器绑定操作,直接将逻辑迁移到Fragment的onViewCreated生命周期方法中即可,无需额外适配。
重写后代码
@Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); // 判空避免空指针异常 if (getActivity() == null) { return; } ListView homeListView = getActivity().findViewById(R.id.home_list); homeListView.setAdapter(new BaseAdapter() { @Override public int getCount() { return 3; } @Override public Object getItem(int i) { return null; } @Override public long getItemId(int i) { return 0; } @Override public View getView(int i, View view, ViewGroup viewGroup) { return LayoutInflater.from(getActivity()).inflate(R.layout.list_item_home, null); } }); }
特殊场景适配
如果你的业务逻辑必须等待Activity完全执行完onCreate生命周期才能运行,可以通过监听Activity的生命周期实现:
@Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); requireActivity().getLifecycle().addObserver(new LifecycleEventObserver() { @Override public void onStateChanged(@NonNull LifecycleOwner source, @NonNull Lifecycle.Event event) { if (event == Lifecycle.Event.ON_CREATE) { // 此处放置需要等待Activity创建完成后执行的逻辑 // 执行完成后移除观察者避免内存泄漏 source.getLifecycle().removeObserver(this); } } }); }
内容的提问来源于stack exchange,提问作者Tony Wamba
相关产品推荐
相关产品推荐

