web-dev-qa-db-fra.com

=Android Databindinging: Impossible de trouver ... BindingInply dans le fichier de base de données généré

J'essaie de créer un point de vue d'une vue en utilisant l'exemple projet Android-Sunflower. Le problème actuel est que lorsque j'essaie de construire le projet, je reçois l'erreur error: cannot find symbol symbol: class FragmentShopBindingImpl location: package {{packageName}}.databinding Dans la classe DataBindinMapperImpl Je ne suis pas vraiment sûr de ce qu'il me manque ici, puisque j'ai tout ajouté de l'exemple projet. La classe FragmentShopBindingImpl n'est pas générée, ni ne devrait-il pas? Puisque je ne peux voir aucune occurrence d'une classe se terminant par 'IMP' dans le Android Exemple de tournesol
[.____] Mon code:

override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {

        val factory = InjectorUtils.provideShopViewModelFactory(context!!)
        val shopViewModel = ViewModelProviders.of(this, factory)
            .get(ShopViewModel::class.Java)

        val binding = DataBindingUtil.inflate<FragmentShopBinding>(
            inflater, R.layout.fragment_shop, container, false).apply {
            viewModel = shopViewModel
            lifecycleOwner = this@ShopFragment
        }

        return binding.root
    }

Disposition:

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:tools="http://schemas.Android.com/tools">

    <data>
        <variable
            name="viewModel"
            type="{{packageName}}.viewmodel.ShopViewModel" />
    </data>

    <LinearLayout
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        Android:orientation="vertical"
        tools:context=".fragments.ShopFragment">

        <TextView
            Android:text="@{viewModel}"
            Android:layout_width="match_parent"
            Android:layout_height="match_parent" />

    </LinearLayout>
</layout>

Image du fichier généré (ignorer le {{packagename}}:

enter image description here

8
BrianM

Vous devez définir une variable comme observablefield ci-dessous:

 public final ObservableField<String> name = new ObservableField<>();
 public final ObservableField<String> family = new ObservableField<>();
0
faribakhandani