setContentView() 首先调用还是最后一个调用?



我最近收到一个关于创建编程视图的问题。为什么我们在初始化所有视图并设置所有参数后调用 setContentView?

简单的例子:

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val l = LinearLayout(this)
l.orientation = LinearLayout.VERTICAL
for (i in 0 until 300)
l.addView(someTextView(i.toString()))
setContentView(l)
}
fun someTextView(text: String): TextView {
val t = TextView(this)
t.text = text
return t
}

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val l = LinearLayout(this)
setContentView(l)
l.orientation = LinearLayout.VERTICAL
for (i in 0 until 300)
l.addView(someTextView(i.toString()))
}
fun someTextView(text: String): TextView {
val t = TextView(this)
t.text = text
return t
}

两者之间有什么效率差异吗?同样在更复杂的视图的情况下?

你的代码没有问题。这就是原因。 -setContentView 只需执行显示活动界面的视图 -首先,你通过ActivityContext创建一个线性布局,然后添加大量的视图。之后你说"嘿活动,这是你的观点"。第二个只是将线性布局附加到活动中,然后将视图添加到其中.两者都是正常的,没有任何问题。 但

setContentView在现实生活中非常好,因为没有人会做你想做的事情。每个活动,片段..等需要一个XML文件来识别它的布局,并且每个视图都是通过设计组织的。之后,他们可以通过id调用它视图,只需编辑xml文件即可组织视图(不会更改很多代码(。

所以基本上设置内容视图只是一种方法,用活动说哪个视图将成为它的界面

最新更新