Rah*_*hul 4 android kotlin android-viewbinding
我有一个带有按钮的活动。在按钮上单击“我想更新文本视图中的文本”。我想用ViewBinding普通的代替findViewById
这就是我创建 val 绑定的方式
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val binding = ActivityMainBinding.inflate(layoutInflater);
setContentView(binding.root)
binding.btnRoll.setOnClickListener {
rollDice()
}
}
Run Code Online (Sandbox Code Playgroud)
现在rollDice我想更新文本视图,但我无法访问有意义的绑定,因为它的范围仅限于onCreate(),那么对此的最佳实践是什么?
private fun rollDice() {
val random = Random().nextInt(6) + 1
binding.txt_random.setText("random")
}
Run Code Online (Sandbox Code Playgroud)
你有两个选择。
由于 Activity 的膨胀内容完全绑定到其生命周期,因此将引用保留为属性是安全的
class MainActivity : AppCompatActivity() {
lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater);
setContentView(binding.root)
binding.btnRoll.setOnClickListener {
rollDice()
}
}
private fun rollDice() {
val random = Random().nextInt(6) + 1
binding.txt_random.setText("random")
}
}
Run Code Online (Sandbox Code Playgroud)
这就是我通常所做的,它避免创建一个并非真正必要的属性
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val binding = ActivityMainBinding.inflate(layoutInflater);
setContentView(binding.root)
binding.btnRoll.setOnClickListener {
rollDice(binding)
}
}
private fun rollDice(binding: ActivityMainBinding) {
val random = Random().nextInt(6) + 1
binding.txt_random.setText("random")
}
}
Run Code Online (Sandbox Code Playgroud)
这两个选项都是使绑定对活动方法可见的有效方法。
| 归档时间: |
|
| 查看次数: |
4879 次 |
| 最近记录: |