【发布时间】:2018-07-27 12:16:22
【问题描述】:
xml布局文件和视图持有者都是正确的,所以我仍然不知道为什么我会收到这个错误。
我的同事都已经仔细检查过了。我创建了一个包含应用程序模块的模块,现在出现了这个错误。
如果有任何想法或帮助,我将不胜感激!
错误:
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':apk_holder:compileBetaDebugJavaWithJavac'.
> java.lang.RuntimeException: Found data binding errors.
****/ data binding error ****msg:Could not find accessor com.laurence.ui.TitleMvvm.ViewModel.onClick and java.lang.Object has 0 abstract methods, so is not resolved as a listener
file:D:\laur\Documents\Apps\TestApp\app\src\main\res\layout\title.xml
loc:17:23 - 17:33
****\ data binding error ****
****/ data binding error ****msg:Could not find accessor com.laurence.ui.NotesMvvm.ViewModel.onClick and java.lang.Object has 0 abstract methods, so is not resolved as a listener
file:D:\laur\Documents\Apps\TestApp\app\src\main\res\layout\activity_notes.xml
loc:21:23 - 21:33
loc:61:27 - 61:37
****\ data binding error ****
****/ data binding error ****msg:Could not find accessor com.laurence.ui.SplashMvvm.ViewModel.onClick and java.lang.Object has 0 abstract methods, so is not resolved as a listener
file:D:\laur\Documents\Apps\TestApp\app\src\main\res\layout\activity_splash.xml
loc:26:31 - 26:52
****\ data binding error ****
****/ data binding error ****msg:Could not find accessor com.laurence.ui.NewMvvm.ViewModel.onClick and java.lang.Object has 0 abstract methods, so is not resolved as a listener
file:D:\laur\Documents\Apps\TestApp\app\src\main\res\layout\fragment_new.xml
loc:31:35 - 31:52
****\ data binding error ****
title.xml:
<?xml version="1.0" encoding="utf-8"?>
<layout 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">
<data>
<variable
name="vm"
type="com.laurence.ui.TitleMvvm.ViewModel" />
</data>
<android.support.constraint.ConstraintLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:onClick="@{vm::onClick}">
</android.support.constraint.ConstraintLayout>
</layout>
TitleScreen.kt
interface TitleMvvm {
interface View : MvvmView
interface ViewModel : MvvmViewModel<View>{
@get:Bindable
val isClickableSection: Boolean
fun onClick()
}
}
class TitleDelegate : BaseActivity<TitleViewHolder> {
override fun createViewHolder(parent: ViewGroup): TitleViewHolder = Utils.createViewHolder(parent, R.layout.title, ::TitleViewHolder)
override fun bindViewHolder(viewHolder: TitleViewHolder, list: List<SectionItem>, position: Int) {
viewHolder.viewModel.update(list[position])
}
}
class TitleViewHolder constructor(itemView: View) : BaseViewHolder<TitleBinding, TitleMvvm.ViewModel>(itemView), TitleMvvm.View {
init {
viewHolderComponent.inject(this)
bindContentView(itemView)
}
}
@PerViewHolder
open class TitleViewModel
@Inject
constructor(private var navigator: Navigator,
private var urlHandler: UrlHandler) : BaseViewModel<TitleMvvm.View>(), TitleMvvm.ViewModel {
override fun onClick() {
if (isClickableSection) {
// yet to do something
}
}
}
【问题讨论】:
-
你在xml中添加
android:onClick="someMethod()"了吗? -
能否提供活动类代码和xml
-
@ND1010_ 添加了代码
-
好的检查请尝试我的回答
-
我会在 5 分钟内完成 :)
标签: java android android-studio kotlin android-databinding