android - 如何初始化ViewBinding?

标签 android kotlin

如何初始化VievBinding?在 AppCompactActivity 版本 1.0.0 中,可以将布局传递给父构造函数,这样您就不必编写 OnCreateView。 我这样做了,但后来我想使用 VievBinding,但它对我不起作用。不显示文本。可以做什么?

    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))
    }

尽管如果您依赖 __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)
    }

布局膨胀不应该在 onStart 中。它在 Activity 中进入 onCreate,在 Fragment 中进入 onCreateView

关于android - 如何初始化ViewBinding?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60541023/

相关文章:

gradle - Gradle Kotlin DSL 中的 kotlin ("...") 方法是什么?

java - Kotlin 委托(delegate)给 future

android - 在 android 中显示 Strings.xml 文件中的项目符号列表

android - 使用gradle的android格式源代码

java - 更新到 64 位版本的谷歌播放

kotlin - kotlin-native 有析构函数吗?

kotlin - 传递和访问已传递到需要其父类(super class)型的类构造方法中的子类型的值和函数

kotlin - Map withDefault 无法在 kotlin 中工作?

android - 使用 ViewFlipper 更新高度

android - BroadcastReceiver 没有收到警报的广播