Почему компилятор не может найти мой адаптер привязки?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Почему компилятор не может найти мой адаптер привязки?

Сообщение Anonymous »

Я работал над проектом XML + DataBinding для Android, но сборки завершались ошибками.
Я воспроизвел проблему в следующем простом примере:
activity_main.xml MainActivity.kt

Код: Выделить всё

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"
}
}
BindingAdapters.kt

Код: Выделить всё

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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»