Кнопка добавления не отвечает на клики … и даже logcat не показывает сообщение об ошибке?

#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)