#android #kotlin
#Android #kotlin
Вопрос:
Кнопка добавления не отвечает ни на один из кликов, которые я проверил, но это не просто responding…my код для действия и макет приведены ниже
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_add)
val binding: ActivityAddBinding = ActivityAddBinding.inflate(layoutInflater)
val title = binding.etTitle
val author = binding.etAuthor
val pages = binding.etNoOfPages
val addBtn = binding.btnAdd
addBtn.setOnClickListener {
Log.e("Button Clicked","ButtonResponded/NotResponded")
Toast.makeText(this,"Add Clicked",Toast.LENGTH_SHORT).show()
//val myDB = MyDatabaseHelper(this)
//myDB.addBook(title.text.toString(),author.text.toString(),Integer.parseInt(pages.toString()))
}
}
Layoutfile……..
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="24dp"
tools:context=".AddActivity">
<Button
android:id="@ id/btn_add"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="56dp"
android:textSize="16sp"
android:text="@string/add"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@ id/et_no_of_pages" />
Пожалуйста, помогите
Комментарии:
1. Вот ссылка на официальный документ для привязки к просмотру Android для справки. developer.android.com/topic/libraries/view-binding#setup Я только что скопировал приведенный выше код инструкций в свой проект, и он работает нормально, кроме того, он совпадает с вашим кодом. Вы добавили bindingsFeature в свой файл gradle?
2. @hari yup добавил функцию сборки
Ответ №1:
используйте это
val binding: ActivityAddBinding = DataBindingUtil.setContentView(this, R.layout.activity_add)
вместо
val binding: ActivityAddBinding = ActivityAddBinding.inflate(layoutInflater)
и поскольку вы устанавливаете представление содержимого, вызывая DataBindingUtil.setContentView(this, R.layout.activity_main)
его, вам больше не нужно использовать setContentView(R.layout.activity_add)
полный onCreate()
должен выглядеть так
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val binding: ActivityAddBinding = DataBindingUtil.setContentView(this, R.layout.activity_add)
val title = binding.etTitle
val author = binding.etAuthor
val pages = binding.etNoOfPages
val addBtn = binding.btnAdd
addBtn.setOnClickListener {
Log.e("Button Clicked","ButtonResponded/NotResponded")
Toast.makeText(this,"Add Clicked",Toast.LENGTH_SHORT).show()
//val myDB = MyDatabaseHelper(this)
//myDB.addBook(title.text.toString(),author.text.toString(),Integer.parseInt(pages.toString()))
}
}
Ответ №2:
Вам нужно удалить существующую setContentView
строку и добавить setContentView(binding.getRoot())
в конце вашего метода onCreate ().
Ответ №3:
Лучший способ раздуть a View
с привязкой данных в Activity
классе
binding = DataBindingUtil.setContentView(this, R.layout.activity_add)