View Binding 报错的原因和解决方法是什么?
What is the cause and sol to the error showing due to view Binding?
单击 btnBmi 按钮时,应用程序崩溃,并且 logcat 显示绑定代码错误。
我已经在 build.gradle 文件中添加了代码并同步了它。
buildFeatures {
viewBinding true
}
// .kt 文件的代码。
package com.nandini.android.workoutapp
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.nandini.android.workoutapp.databinding.ActivityBmiCalculatorBinding
class BmiCalculatorActivity : AppCompatActivity() {
private var binding: ActivityBmiCalculatorBinding?=null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding= ActivityBmiCalculatorBinding.inflate(layoutInflater)
setContentView(binding?.root)
setSupportActionBar(binding?.toolbarBmi)
if(supportActionBar!=null){
supportActionBar?.setDisplayHomeAsUpEnabled(true)
supportActionBar?.title="Calculate BMI"
}
binding?.toolbarBmi?.setNavigationOnClickListener {
onBackPressed()
}
}
}
跳转到此 activity 的按钮位于 activity_main.xml 文件中,其 ID 为:btnBmi,意图代码在 MainActivity.kt 文件中。
//在MainActivity.kt文件的onCreate方法中。
binding?.btnBmi?.setOnClickListener{
val intent = Intent(this@MainActivity,BmiCalculatorActivity::class.java)
startActivity(intent)}
第 1 步更改样式中的父主题。xml/theme。xml-
parent="Theme.MaterialComponents.Light.NoActionBar"
第 2 步 - 在 activity_bmi_calculator.xml
中添加工具栏
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:navigationIcon="@drawable/ic_home_black_24dp" />
步骤 3
class BmiCalculatorActivity
: AppCompatActivity() {
lateinit var binding: ActivityBmiCalculatorBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityBmiCalculatorBinding.inflate(layoutInflater)
setContentView(binding.root)
binding.toolbar.title = "Calculate BMI"
binding.toolbar.setNavigationOnClickListener {
onBackPressed()
}
}
单击 btnBmi 按钮时,应用程序崩溃,并且 logcat 显示绑定代码错误。
我已经在 build.gradle 文件中添加了代码并同步了它。
buildFeatures {
viewBinding true
}
// .kt 文件的代码。
package com.nandini.android.workoutapp
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.nandini.android.workoutapp.databinding.ActivityBmiCalculatorBinding
class BmiCalculatorActivity : AppCompatActivity() {
private var binding: ActivityBmiCalculatorBinding?=null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding= ActivityBmiCalculatorBinding.inflate(layoutInflater)
setContentView(binding?.root)
setSupportActionBar(binding?.toolbarBmi)
if(supportActionBar!=null){
supportActionBar?.setDisplayHomeAsUpEnabled(true)
supportActionBar?.title="Calculate BMI"
}
binding?.toolbarBmi?.setNavigationOnClickListener {
onBackPressed()
}
}
}
跳转到此 activity 的按钮位于 activity_main.xml 文件中,其 ID 为:btnBmi,意图代码在 MainActivity.kt 文件中。
//在MainActivity.kt文件的onCreate方法中。
binding?.btnBmi?.setOnClickListener{
val intent = Intent(this@MainActivity,BmiCalculatorActivity::class.java)
startActivity(intent)}
第 1 步更改样式中的父主题。xml/theme。xml-
parent="Theme.MaterialComponents.Light.NoActionBar"
第 2 步 - 在 activity_bmi_calculator.xml
中添加工具栏 <androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:navigationIcon="@drawable/ic_home_black_24dp" />
步骤 3
class BmiCalculatorActivity
: AppCompatActivity() {
lateinit var binding: ActivityBmiCalculatorBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityBmiCalculatorBinding.inflate(layoutInflater)
setContentView(binding.root)
binding.toolbar.title = "Calculate BMI"
binding.toolbar.setNavigationOnClickListener {
onBackPressed()
}
}