为了账号安全,请及时绑定邮箱和手机立即绑定

片段中onCreateView和onViewCreated之间的区别

/ 猿问

片段中onCreateView和onViewCreated之间的区别

慕的地6264312 2019-12-27 15:02:21

这两种方法之间的本质区别是什么?创建TextView时,是否应该一个使用另一个来提高性能?


编辑:有什么区别


onCreateView() {

  root = some view

  View v = new View(some context);

  root.add(v);

  return root;

}



onViewCreated() {

  View v = new View(some context);

  getView().add(v);

}


查看完整描述

3 回答

?
LEATH

我们会在崩溃时初始化中的视图onCreateView。


您应该在中添加布局,onCreateView但不应使用findViewByIdin 初始化其他视图onCreateView。


因为有时视图没有正确初始化。因此,请始终使用findViewByIdin onViewCreated(当完全创建视图时),并且它还会将视图作为参数传递。


onViewCreated 确保已完全创建视图。


onViewCreated android文档


在onCreateView(android.view.LayoutInflater, android.view.ViewGroup,android.os.Bundle)返回之后,但尚未将任何保存状态恢复到视图中之前立即调用。一旦子类知道其视图层次结构已完全创建,这将给子类一个初始化自身的机会。但是,此时片段的视图层次结构尚未附加到其父级。


查看完整回答
反对 回复 2019-12-27
?
慕粉4167745

onViewCreatedonCreateView(您初始化并创建所有对象(包括TextView)的方法)之后立即调用,因此这与性能无关。


从开发者站点:


onViewCreated(视图视图,捆绑保存的InstanceState)


在onCreateView(LayoutInflater,ViewGroup,Bundle)返回之后但在任何保存的状态恢复到视图中之前立即调用。一旦子类知道其视图层次结构已完全创建,这将给子类一个初始化自身的机会。但是,此时片段的视图层次结构尚未附加到其父级。


资料来源:Fragment#onViewCreated


查看完整回答
反对 回复 2019-12-27
?
UYOU

最好对中的字段分配子视图onViewCreated。这是因为该框架会为您执行自动的空检查,以确保正确创建和放大了Fragment的视图层次结构(如果使用XML布局文件)。


来自以下代码段:FragmentManger.java


// This calls onCreateView()

f.mView = f.performCreateView(f.getLayoutInflater(f.mSavedFragmentState), null, f.mSavedFragmentState);


// Null check avoids possible NPEs in onViewCreated

// It's also safe to call getView() during or after onViewCreated()

if (f.mView != null) {

    f.mView.setSaveFromParentEnabled(false);

    if (f.mHidden) f.mView.setVisibility(View.GONE);

    f.onViewCreated(f.mView, f.mSavedFragmentState);

}


查看完整回答
反对 回复 2019-12-27

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信