J'ai activé la liaison de données, mais pendant que j'exécute le code, j'obtiens cette erreur.
e: [kapt] Une exception s'est produite: Android.databinding.tool.util.LoggedErrorException: erreurs de liaison de données trouvées.
J'ai créé une classe de fragments et XML pour cette classe. Im capable d'importer la classe datbindingutil.
J'ai fait reconstruire/synchroniser avec les fichiers gradle/invalider le cache et redémarrer, rien n'a fonctionné.
<layout>
<!--suppress AndroidUnknownAttribute -->
<data class=".databinding.ProfileFragmentBinding">
<variable
name="user"
type="com.sample.sample.user.User" />
<variable
name="vm"
type="com.sample.sample.user.UserViewModel" />
<variable
name="handler"
type="com.sample.sample.user.profile.ProfileFragment" />
</data>
<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">
<de.hdodenhof.circleimageview.CircleImageView
Android:id="@+id/profileIV"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_marginStart="@dimen/medium"
Android:layout_marginTop="@dimen/medium"
Android:contentDescription="@null"
Android:src="@mipmap/ic_launcher_round"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:url="@{user.avatarUrl}" />
<LinearLayout
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:gravity="center"
Android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="@+id/profileIV"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="@+id/profileIV">
<TextView
Android:id="@+id/profileNameLabel"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:fontFamily="@font/myriad_pro_semibold"
Android:text="@{user.name}"
Android:textColor="@color/black_transparent_de"
Android:textSize="@dimen/text_regular"
tools:text="NAME" />
<TextView
Android:id="@+id/badgeLabel"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_marginTop="5dp"
Android:fontFamily="@font/myriad_pro_semibold"
Android:text="@{user.badge}"
Android:textColor="@color/grey_000000"
Android:textSize="@dimen/text_regular"
tools:text="Superman" />
<TextView
Android:id="@+id/profile_Label"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_marginTop="5dp"
Android:fontFamily="@font/roboto_bold"
Android:text="@{user.badge}"
Android:textColor="@color/green_39b54a"
Android:textSize="@dimen/text_small"
tools:text="farmer_v1" />
</LinearLayout>
<ImageView
Android:id="@+id/badgeIV"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_marginEnd="@dimen/medium"
Android:layout_marginTop="@dimen/medium"
Android:contentDescription="@null"
Android:src="@mipmap/ic_launcher"
app:error="@{@drawable/ic_profile_default_grey_24dp}"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:placeholder="@{@drawable/ic_profile_default_grey_24dp}"
app:url="@{user.badgeUrl}" />
<ImageView
Android:id="@+id/locationPinIV"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_marginTop="@dimen/medium"
Android:contentDescription="@null"
Android:src="@drawable/ic_location_pin"
app:layout_constraintStart_toStartOf="@+id/profileIV"
app:layout_constraintTop_toBottomOf="@+id/profileIV" />
<TextView
Android:id="@+id/profileAddressTV"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_marginStart="@dimen/narrow"
Android:fontFamily="@font/roboto"
Android:textColor="@color/grey_000000"
app:layout_constraintBottom_toBottomOf="@+id/locationPinIV"
app:layout_constraintLeft_toRightOf="@+id/locationPinIV"
app:layout_constraintTop_toTopOf="@+id/locationPinIV"
tools:text="bangalore, Karnataka" />
<ImageView
Android:id="@+id/dobIV"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_marginStart="@dimen/standard"
Android:layout_marginTop="@dimen/medium"
Android:contentDescription="@null"
Android:src="@drawable/ic_dob"
app:layout_constraintLeft_toRightOf="@+id/profileAddressTV"
app:layout_constraintTop_toBottomOf="@+id/profileIV" />
<TextView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_marginStart="@dimen/narrow"
Android:fontFamily="@font/roboto"
Android:textColor="@color/grey_000000"
app:layout_constraintBottom_toBottomOf="@+id/locationPinIV"
app:layout_constraintLeft_toRightOf="@+id/dobIV"
app:layout_constraintTop_toTopOf="@+id/locationPinIV"
tools:text="born on 01/01/2000" />
<TextView
Android:id="@+id/activityLabel"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_marginTop="@dimen/big"
Android:fontFamily="@font/myriad_pro_semibold"
Android:text="@string/activities"
Android:textColor="@color/black_transparent_de"
Android:textSize="@dimen/text_regular"
app:layout_constraintStart_toStartOf="@+id/profileIV"
app:layout_constraintTop_toBottomOf="@+id/locationPinIV" />
<View
Android:id="@+id/dividerV"
Android:layout_width="match_parent"
Android:layout_height="1dp"
Android:layout_marginEnd="@dimen/small"
Android:layout_marginStart="@dimen/small"
Android:layout_marginTop="@dimen/regular"
Android:background="@color/grey_000000"
app:layout_constraintTop_toBottomOf="@+id/activityLabel" />
<RelativeLayout
Android:layout_width="match_parent"
Android:layout_height="0dp"
app:layout_constraintTop_toBottomOf="@+id/dividerV">
<!--<com.google.Android.material.tabs.TabLayout
Android:id="@+id/tablayout"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
app:pager="@{(pager)}"
app:tabGravity="fill"
app:tabIndicatorColor="@color/black"
app:tabMode="fixed"
app:tabSelectedTextColor="@color/black"
app:tabTextAppearance="@style/CustomTextTab"
app:tabTextColor="#b4ffffff" />
<androidx.viewpager.widget.ViewPager
Android:id="@+id/viewpager"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_below="@+id/tablayout"
app:handler="@{handler}"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />-->
</RelativeLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
class ProfileFragment : Fragment() {
@Inject
lateinit var mFactory: ViewModelProvider.Factory
private lateinit var mBinding: ProfileFragmentBinding
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_profile, container, false);
return mBinding.root
}
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
val vm: UserViewModel = getViewModel(mFactory)
mBinding.vm = vm
//mBinding.handler = this
//mBinding.setLifecycleOwner(this)
}
/*@BindingAdapter("bind:handler")
fun bindViewPagerAdapter(view: ViewPager, activity: MainActivity) {
val adapter = ProfilePagerAdapter(view.context, activity.supportFragmentManager)
view.adapter = adapter
}
@BindingAdapter("bind:pager")
fun bindViewPagerTabs(view: TabLayout, pagerView: ViewPager) {
view.setupWithViewPager(pagerView, true)
}*/
}
dans mon cas, j'ai pu le trouver lorsque la souris survolait cette ligne dans la sortie de génération, comme indiqué ici:
c'est vraiment dommage de voir comment ils montrent l'erreur, pour l'erreur la plus simple de tous les temps, j'essayais 10 solutions différentes aussi bien invalider le cache et ...
[~ # ~] mise à jour [~ # ~] :
vous pouvez également cliquer ici:
et vous obtiendrez quelque chose comme ceci:
qui est une information très détaillée sur l'erreur, il me manquait ce bouton en 7 ans de Android Développement: D
Généralement, cette erreur se produit lorsque le nom de la variable passée dans le fichier XML via la liaison de données est incorrect. Passez simplement la souris sur l'erreur et vous pourrez y identifier la variable coupable.
Courir ./gradlew build --stacktrace
pour vérifier les détails, qui vous indiqueront où le problème se produit, quelque chose comme:
e: [kapt] Une exception s'est produite: Android.databinding.tool.util.LoggedErrorException: erreurs de liaison de données trouvées. Fichier d'accesseur xx introuvable: xxx/app/src/main/res/layout/fragment_xxxx.xml Ligne: 108
Parfois, si vous avez modifié le nom de la propriété, en particulier lorsqu'il est modifié par refactor
=> rename
, le nom de la propriété ne sera pas modifié automatiquement en xml.