У меня есть привязка данных в другом месте, и это единственное место, где оно дает мне эти проблемы, у меня нет кинжала.Если я удаляю строки в этом представлении, которые используют привязку данных, я не получаю ошибок и могу установить на свое устройство.Я пробовал каждую комбинацию перестройки / перезапуска и очистки кешей и удаления файлов сборки.Я также попытался отключить привязку данных и снова включить ее.
Вот файл макета, который я использую, он называется fragment_subscription.xml
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<variable name="fragment" type="com.example.subscription.SubscriptionFragment"/>
<variable name="week" type="com.android.billingclient.api.SkuDetails"/>
<variable name="month" type="com.android.billingclient.api.SkuDetails"/>
<variable name="year" type="com.android.billingclient.api.SkuDetails"/>
</data>
<com.example.CustomButton
android:id="@+id/week_subscription_button"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_gravity="center_vertical"
android:padding="5dp"
app:presetButtonPriceText="@{week.price}"
app:presetButtonUnitText="@string/week_subscription_unit"
app:presetButtonValueText="@string/week_subscription_value"/>
<com.example.CustomButton
android:id="@+id/month_subscription_button"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_gravity="center_vertical"
android:padding="5dp"
app:presetButtonPriceText="@{month.price}"
app:presetButtonUnitText="@string/month_subscription_unit"
app:presetButtonValueText="@string/month_subscription_value"/>
<com.example.CustomButton
android:id="@+id/year_subscription_button"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_gravity="center_vertical"
android:padding="5dp"
app:presetButtonPriceText="@{year.price}"
app:presetButtonUnitText="@string/year_subscription_unit"
app:presetButtonValueText="@string/year_subscription_value"/>
</layout>
Вот мои атрибуты вида, характерные для моей пользовательской кнопки
<attr name="presetButtonUnitText" format="integer"/>
<attr name="presetButtonPriceText" format="string"/>
<attr name="presetButtonValueText" format="integer"/>
Вот где я создаю свой вид в SubscriptionFragment.kt
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return FragmentSubscriptionBinding.inflate(inflater, container, false).let {
this.binding = it
bind(skuDetailsList)
it.root
}
}
Вот где я связываю свой вид
private fun bind(skuList: MutableList<SkuDetails>) {
binding?.let {
if (skuList.isNotEmpty()) {
it.week = skuList[0]
it.month = skuList[1]
it.year = skuList[2]
it.fragment = SubscriptionFragment@this
}
}
}
Я пытался добавить эти строки в gradle своих приложений.properties
android.databinding.enableV2 = true
android.enableExperimentalFeatureDatabinding = true
Я добавил их в gradle моих приложений
kapt 'com.android.databinding:compiler:3.1.4'
kapt {
generateStubs = true
}
configurations.all {
resolutionStrategy {
force 'com.android.support:support-annotations:23.1.1'
}
}