我对onCreate()
,onCreateView()
和getView()
的使用感到困惑。
1。我可以在activity
类中使用所有这三个吗?
2。我是否应该强制使用不同的layouts
?
以下是从Google开发人员网站:
的描述o这些方法oncreate()
活动开始时被调用。
这是大多数初始化应该去的地方:
- 调用setContentView(int)夸大活动的UI,
- 使用FindViewById(int)与UI中的小部件进行编程交互,
- 调用a takanedquery(android.net.uri,string [],字符串,字符串,字符串[],字符串)检索光标以显示要显示的数据,等等。
oncreateview()
这不是活动的生命周期方法。这只是一种成员方法,将用于指定任务,如文档中所述。
中所述标准实施 android.view.layoutinflater.factory.oncreateview在充气时使用 随着GetSystemService返回的LayoutInflater。这 实施无济于事,而是 pre android.os.build.version_codes.honeycomb应用程序。较新的应用程序应该 使用oncreateview(视图,字符串,上下文,属性网)。依靠电话 活动中的oncreateview()是不良编程。
如果您使用此方法用于Fragments
,则
它将被要求使片段实例化其用户界面视图。
getView()
此方法仅适用于Fragments
。
它获取片段布局的根视图(由 如果提供。
参考:
https://developer.android.com/reference/android/App/fragment.html#getview()https://developer.android.com/reference/android/app/activity.html#oncreate(android.os.bundle)
首先请参考活动生命周期https://developer.android.com/reference/ardroid/android/app/activity.html,
oncreate():
首次创建活动时调用。在这里,您应该在这里进行所有正常的静态设置:创建视图,将数据绑定到列表等。此方法还为您提供一个包含活动先前冷冻状态的捆绑包(如果有的话)。始终随后是onstart()。
第二,请参阅片段生命周期https://www.tutorialspoint.com/android/android_fragments.htm
您感到困惑,因为onCreate()在活动和碎片中既正确又对!让我们探索.. onCreateview():
oncreate()片段中的方法是在片段的 onattachfragment()之后调用的,但是在该片段的 increateview()之前。在此方法中,您可以分配变量,获取意图额外功能,以及任何不涉及视图层次结构(即非塑性初始化)的其他内容。这是因为当活动的ongreate()未完成时,可以调用此方法,因此尝试访问视图层次结构可能会导致崩溃。
第三,请参阅适配器,http://www.edureka.co/blog/what-are-are-adapters-in-android/
getView():
1 :LayoutInflater取用您的布局XML文件,并从其内容中创建不同的视图。
2 :构建适配器是为了重用视图,当视图滚动以使其不再可见时,可以用于出现的新视图之一。此重复使用的视图是转换视图。如果这是无效的,则意味着没有回收的视图,我们必须创建一个新的视图,否则我们应该使用它来避免创建新的。
3 :提供父母,因此您可以将视图夸大到适当的布局参数中。
所有这些都可以用来有效地创建列表中出现的视图(或其他适配器的视图):
public View getView (int position, View convertView, ViewGroup parent){
if( convertView == null ){
//We must create a View:
convertView = inflater.inflate(R.layout.my_list_item, parent, false);
}
//Here we can do changes to the convertView, such as set a text on a TextView
//or an image on an ImageView.
return convertView;
}
您无法在活动中使用 oncreateview()> and getView()在您的活动中(如果您愿意,如果您愿意,可以在活动中创建自定义适配器在该课程中,您可以使用 getView())。