Я воспроизвел проблему в следующем простом примере:
activity_main.xml
Код: Выделить всё
Код: Выделить всё
package com.example.databindingdemo
import android.os.Bundle
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import com.example.databindingdemo.databinding.ActivityMainBinding
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
binding.myName = "Abhinav"
}
}
Код: Выделить всё
package com.example.databindingdemo
import android.widget.TextView
import androidx.databinding.BindingAdapter
object BindingAdapters {
@JvmStatic
@BindingAdapter("myOwnText")
fun setMyOwnText(view: TextView, value: String?) {
view.text = value ?: "User"
}
}
Код: Выделить всё
Caused by: android.databinding.tool.util.LoggedErrorException: Found data binding error(s):
[databinding] {"msg":"Cannot find a setter for \u003candroid.widget.TextView app:myOwnText\u003e that accepts parameter type \u0027java.lang.String\u0027\n\nIf a binding adapter provides the setter, check that the adapter is annotated correctly and that the parameter type matches.","file":"app\\src\\main\\res\\layout\\activity_main.xml","pos":[{"line0":20,"col0":29,"line1":20,"col1":34}]}
- Файл BindingAdapters.kt находится в корневой папке (рядом с MainActivity.kt)
- Привязка данных включена в build.gradle.kts
- Версия AGP — 9.0.0
- Я получаю предупреждение «Функция «setMyOwnText» никогда не используется» в Android Studio, хотя я использую этот адаптер внутри моего TextView в Activity_main
Подробнее здесь: https://stackoverflow.com/questions/798 ... ng-adapter