📜  Mainactivity 之外的 kotlin 访问布局组件 - Kotlin (1)

📅  最后修改于: 2023-12-03 15:02:50.909000             🧑  作者: Mango

在 Kotlin 中访问布局组件

你可能知道,Kotlin 是一种流行的跨平台编程语言,现在在日益增长的 Android 应用开发中越来越普遍。在 Android 应用程序中,访问布局组件是必不可少的,但是许多开发人员仅仅知道如何在 MainActivity 中实现这一点。但是,你可以在 MainActivity 之外的 Kotlin 文件中访问布局组件。在本文中,我们将探讨 Kotlin 中访问布局组件的其他方法。

使用 view binding

View binding 是一个将布局文件中的视图绑定到代码中的方法。它的优点是速度快、类型安全和 Kotlin-friendly。要使用 view binding,请遵循以下步骤:

1. 启用 view binding

在 build.gradle 文件中,添加以下代码:

android {
    ...
    buildFeatures {
        viewBinding true
    }
}
2. 创建绑定类

创建绑定类非常简单。在 MainActivity 之外的 Kotlin 文件中,使用以下代码创建绑定类:

val binding = ActivityMainBinding.inflate(layoutInflater)
3. 访问视图

要访问布局中的视图,请使用以下代码:

binding.button.setOnClickListener { // do something }

最重要的是,你无需担心布局中的视图是否存在,因为你已经绑定了它们。

使用 findViewById

findViewById 是另一种访问布局中的视图的方法。但是,这个方法有一些缺点:它很慢,类型不安全,而且代码很冗长。当你无法使用 view binding 时,才考虑使用 findViewById。

要使用 findViewById,请遵循以下步骤:

1. 找到布局文件

在 res/layout 文件夹下创建布局文件,然后在其中创建视图,例如 button。

2. 在 MainActivity 中引用视图

在 MainActivity 的 onCreate() 方法中使用以下代码:

val button = findViewById<Button>(R.id.button)
3. 访问视图

要访问视图,请使用以下代码:

button.setOnClickListener { // do something }

当你需要找到多个视图时, findViewById 可能会变得更加冗长,所以最好使用 view binding。

结论

这是在 Kotlin 中访问布局组件的两种方法:使用 view binding 和 findViewById。尽管 view binding 比 findViewById 更快、更类型安全和更可读,但有时你可能无法使用它。在这种情况下, findViewById 可能是唯一的选择。不管你使用哪种方法,都记得在布局文件中分配 ID。现在,你已经知道了如何在 MainActivity 之外的 Kotlin 文件中访问布局组件。