Android 如何初始化视图绑定?
如何初始化VievBinding?在AppCompactActivity 1.0.0版中,可以将布局传递给父构造函数,这样您就不会编写OnCreateView。 我是这样做的,但我想使用Viebbinding,但它对我不起作用。不显示文本。可以做些什么Android 如何初始化视图绑定?,android,kotlin,Android,Kotlin,如何初始化VievBinding?在AppCompactActivity 1.0.0版中,可以将布局传递给父构造函数,这样您就不会编写OnCreateView。 我是这样做的,但我想使用Viebbinding,但它对我不起作用。不显示文本。可以做些什么 class MainActivity : AppCompatActivity(R.layout.activity_main) { override fun onStart() { super.onStart()
class MainActivity : AppCompatActivity(R.layout.activity_main) {
override fun onStart() {
super.onStart()
var binding = ActivityMainBinding.inflate(layoutInflater)
binding.hello.text = "Hello"
}
}
var binding=ActivityMainBinding.充气(layoutInflater) 这将再次膨胀布局,您将获得与活动中已设置的视图不同的视图实例 尝试使用以下代码将“活动”视图绑定到活页夹。其中ROOT\u VIEW\u ID是布局中根视图的视图ID
var binding=ActivityMainBinding.bind(findViewById(根视图ID))*
*binding.hello.text=“hello” xml中的布局视图应由
标记包围
<layout>
...// your activity view layout
</layout>
…//您的活动视图布局
尽管使用\u Binding.inflate()
会更容易
版面膨胀不应在
onStart
中。它进入活动中的onCreate
,进入片段中的onCreateView
。检查我读到的这个。如果您重新创建视图,那么一切都将正常工作。但我不需要那个。我想知道如何重新初始化ViewBinding。为什么它在onStart
中而不是onCreate
?问题是视图绑定,而不是databindingval绑定:YourActivityLayoutBinding是ViewBindingUtil.setContentView(这是R.Layour\u activity\u布局)返回视图绑定OK,很抱歉,我找到你了,setContentView可以通过DataBindingUtil调用,但它实际返回ViewBinding不知道为什么人们会否决它。但是这里的信息很有用。我遇到了同样的问题,并被解决了:是的,这会更容易。但是我需要创建BaseActivity,并且所有的活动都将从它继承。我不明白这是如何改变我所说的内容的?类MainActivity:AppCompatActivity(R.layout.Activity_main){private lateinit var binding:ActivityMainBinding override fun onCreate(savedInstanceState:Bundle){super.onCreate(savedInstanceState)binding=ActivityMainBinding.bind(findViewById(Window.ID_ANDROID_CONTENT))}无法工作,原因是:java.lang.ClassCastException:androidx.appcompat.widget.ContentFrameLayout无法强制转换为androidx.constraintlayout.widget.constraintlayout哦,非常有趣。我将相应地更改我的答案。
<layout>
...// your activity view layout
</layout>
class MainActivity : AppCompatActivity(R.layout.activity_main) {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.bind(findViewById(Window.ID_ANDROID_CONTENT).getChildAt(0))
}
class MainActivity : AppCompatActivity {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater, R.layout.activity_main)
setContentView(binding.root)
}