A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution

前端 未结 30 1848
南旧
南旧 2020-12-12 20:01

All of sudden I start getting this error, and I am not getting idea why if anyone just let me know where this error is, will be enough helpful. As much I am able to get is t

30条回答
  •  陌清茗
    陌清茗 (楼主)
    2020-12-12 20:39

    In my case it was because I was not implementing Observable in my ViewModel. I added an EditText to the constraint layout with android:text="@={addProductViewModel.inputProductName}"

    Once I implemented Observable in my ViewModel class the error was gone

    ViewModel

    class AddProductViewModel (
        private val repository: ProductRepository,
        private val context: Context
    ): ViewModel(), Observable {
    
        @Bindable
        val inputProductName = MutableLiveData()
    
    
        fun addProduct() {
            //inputProductName.value
        }
    
        override fun removeOnPropertyChangedCallback(callback: Observable.OnPropertyChangedCallback?) {
            TODO("Not yet implemented")
        }
    
        override fun addOnPropertyChangedCallback(callback: Observable.OnPropertyChangedCallback?) {
            TODO("Not yet implemented")
        }
    }
    

    Complete example for MVVM Databinding using Fragments

    Layout - add_product.xml

    
    
        
            
        
    
        
    
    
            
    
    
    
        
    
    

    AddProductFragment

    class AddProductFragment: Fragment() {
        private lateinit var binding: AddProductBinding
        private lateinit var addProductViewModel: AddProductViewModel
        override fun onCreateView(
            inflater: LayoutInflater,
            container: ViewGroup?,
            savedInstanceState: Bundle?
        ): View? {
            binding =  DataBindingUtil.inflate(inflater, R.layout.add_product, container, false)
            val dao = SubscriberDatabase.getInstance(requireActivity().applicationContext).productDAO
            val repository = ProductRepository(dao)
            val factory = AddProductViewModelFactory(repository, requireActivity().applicationContext)
            addProductViewModel = ViewModelProvider(this, factory).get(AddProductViewModel::class.java)
            binding.addProductViewModel = addProductViewModel
            binding.lifecycleOwner = this
            val view = binding.root
    
            return view
        }
    }
    

    AddProductViewModel

    class AddProductViewModel (
        private val repository: ProductRepository,
        private val context: Context
    ): ViewModel(), Observable {
    
        @Bindable
        val inputProductName = MutableLiveData()
    
    
        fun addProduct() {
            //inputProductName.value
        }
    
        override fun removeOnPropertyChangedCallback(callback: Observable.OnPropertyChangedCallback?) {
            TODO("Not yet implemented")
        }
    
        override fun addOnPropertyChangedCallback(callback: Observable.OnPropertyChangedCallback?) {
            TODO("Not yet implemented")
        }
    }
    

    Hope this helps R

提交回复
热议问题