android - 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 名称。这是怎么做的
解决方案
我建议为此使用视图绑定。 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
变量
推荐阅读
- android - Android 正在切断(剪辑)EditText 和 TextView 中的阿拉伯语文本
- rust - Rust 校验借用整个HashMap,不校验key,有什么好的办法吗?
- reactjs - 带有组件道具的 MaterialUI Button HOC
- c++ - 当代码似乎没有问题时,如何修复 Clion 中的链接器错误?
- r - 将 LM 统计数据提取到表中
- html - 使用 CSS 如何在左侧创建 Google 新闻类型的链接,右侧是缩略图
- android - '尝试在空对象引用上调用虚拟方法'boolean java.util.ArrayList.add(java.lang.Object)'的新上下文'
- dax - 在文本中查找数字总是会出错
- apache-spark - presto 无法从 hive 中搜索数据
- javascript - 'number' 类型的参数不能分配给 '{ [x: number] }' 类型的参数