首页 > 解决方案 > Android开发:Koltin -> 你如何使用你在xml中创建的id名称并在activity中调用它而不创建新的变量

问题描述

我正在关注这个教程视频

在activity.xml中,我创建了一个id名称为的工具栏

  <androidx.appcompat.widget.Toolbar
    android:id="@+id/toolbar_excerise_activity"
    android:background="@color/white"
    android:layout_width="match_parent"
    android:layout_height="?android:attr/actionBarSize">

然后在 on create 方法的 mainActivity.kt 中,他们只调用 +id 名称而不定义变量。这是怎么做的?

class ExceriseActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_excerise)


    setSupportActionBar(**toolbar_exercise_activity**)
}

}

所以他们只是在没有定义变量的情况下调用了toolbar_excerise_activity id 名称。这是怎么做的

标签: androidkotlin

解决方案


我建议为此使用视图绑定。 https://developer.android.com/topic/libraries/view-binding#activities

private lateinit var binding: ActivityExceriseBinding

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    binding = ActivityExceriseBinding.inflate(layoutInflater)
    val view = binding.root
    setContentView(view)
    setSupportActionBar(binding.toolBar)
}

视图绑定将为您的所有 xml 布局创建一个绑定类。绑定类名取决于文件名 ex: my_layout.xml将导致MyLayoutBinding创建一个类。同样在 xml 中,任何具有 id 的东西都将存在于绑定类中。绑定将在 xml 中具有 id 名称的驼峰式版本。含义@+id/my_id将在绑定类中创建一个myId变量


推荐阅读