使用Fragments时无法调用findViewById()
在学习 Kotlin 时,我遇到了片段会话的问题。
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
Log.d("life_cycle", "F onViewCreated")
super.onViewCreated(view, savedInstanceState)
val pass: Button = findViewById(R.id.pass)
pass.setOnClickListener {
dataPassListener.onDataPass("Good bye")
}
}
我想写val pass: Button = findViewById(R.id.pass),但我不能用findViewById()。
我认为问题在于androidx.appcompat.app.AppCompatActivity不是进口的。
回答
根据您所写的内容,此片段来自您的一个类,它扩展了Fragment该类的某些变体。
如果是这种情况,您想要做的是:
val pass: Button = view.findViewById(R.id.pass)
这里的区别在于,它findViewById()是针对view生命周期回调中传递的实例调用的。
(这假设R.id.pass资源是在由此 Fragment 膨胀的视图中定义的)。