这两种方法的本质区别是什么?当我创建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);
}
最好在创建的视图中为字段指定子视图。这是因为框架为您自动执行空检查,以确保片段的视图层次结构已正确创建和膨胀(如果使用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);
}
在创建视图(初始化和创建所有对象的方法,包括文本视图)之后立即调用创建的视图,因此这与性能无关。
从开发商网站:
onViewCreated(视图,捆绑保存的InstanceState)
在onCreateView(LayoutInflater、ViewGroup、Bundle)返回后,但在任何保存的状态恢复到视图之前立即调用。这使子类有机会在知道它们的视图层次结构已完全创建后初始化自己。然而,此时片段的视图层次结构并未附加到其父级。
来源:片段#onViewCreated
我们在初始化onCreateView中的视图时会遇到一些崩溃。
您应该在创建视图中膨胀布局,但不应该使用创建视图中的findViewById初始化其他视图。
因为有时视图没有正确初始化。因此,始终在视图创建中使用findViewById(当视图完全创建时),它还将视图作为参数传递。
onViewCreated
是确保视图已完全创建。
onViewCreated android文档
在返回onCreateView(android.view.LayoutInflater,android.view.ViewGroup,android.os.Bundle)后,但在将任何保存状态还原到视图之前,立即调用。这使子类有机会在知道其视图层次结构已完全创建后进行初始化。然而,此时片段的视图层次结构并没有附加到其父级。
片段中的、和有什么不同,它们各自用于什么?
因此,我一直试图在我的应用程序中实现一个特性,其中所有帖子都将被列出到中的中。但是,每当我访问时,它将返回null。
我正在开发一个应用程序使用Android4.0IC和碎片。 考虑ICS4.0.3(API level 15)API的演示示例应用程序中的修改示例: }
我的中有10个选项卡。打开活动后,第一个片段就会显示出来,但下一个片段中的方法(AsyncTask)会被调用。如果我转到下一个选项卡,比如第3个选项卡,那么将调用第4个中的方法,依此类推。 我不理解这种行为。请救命!
我正在使用带有片段的FragmentPagerAdapter。我的问题是,当我调用setCurrentItem时,正在加载的片段的OnCreateView方法被调用两次。但是,需要注意的是,片断不是重新创建的,而是简单地恢复的。我非常想找到一个解决方案,使OnCreateView只能被调用一次。 两次调用Android oncreateview OnCreateView多次调用/使用ActionB