[英]How to initialize ViewBinding?
How to initialize VievBinding?如何初始化 VievBinding? In AppCompactActivity version 1.0.0, it became possible to pass a layout to the parent constructor so that you would not write OnCreateView.
在 AppCompactActivity 版本 1.0.0 中,可以将布局传递给父构造函数,这样您就不会编写 OnCreateView。 I do so, but then I want to use VievBinding, but it doesn't work for me.
我这样做了,但后来我想使用 VievBinding,但它对我不起作用。 Text is not displayed.
不显示文本。 What can be done?
可以做什么?
class MainActivity : AppCompatActivity(R.layout.activity_main) {
override fun onStart() {
super.onStart()
var binding = ActivityMainBinding.inflate(layoutInflater)
binding.hello.text = "Hello"
}
}
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))
}
Although it's easier if you rely on __Binding.inflate()
.虽然如果你依赖
__Binding.inflate()
更容易。
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)
}
Layout inflation should not be in onStart
.布局膨胀不应在
onStart
。 It goes in onCreate
in Activity, and onCreateView
in Fragment.它进入 Activity 中的
onCreate
和 Fragment 中的onCreateView
。
var binding = ActivityMainBinding.inflate(layoutInflater) var 绑定 = ActivityMainBinding.inflate(layoutInflater)
This will inflate the layout again and you will get a different instance of the views than what is already set in the activity这将再次膨胀布局,您将获得与活动中已设置的视图不同的实例
Try using the below code to bind the activity view to the binder.尝试使用以下代码将活动视图绑定到活页夹。 Where ROOT_VIEW_ID is view id of root view in your layout
其中 ROOT_VIEW_ID 是布局中根视图的视图 ID
var binding = ActivityMainBinding.bind(findViewById(ROOT_VIEW_ID))* var 绑定 = ActivityMainBinding.bind(findViewById(ROOT_VIEW_ID))*
*binding.hello.text = "Hello" *binding.hello.text = "你好"
// Activity class
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState);
val binding:YourActivityLayoutBinding =
DataBindingUtil.setContentView(this, R.layout.your_activity_layout);
}
Layout views in xml should be surrounded by <layout>
tag xml 中的布局视图应该被
<layout>
标签包围
<layout>
...// your activity view layout
</layout>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.