Kotlin MVVM /数据绑定给我错误“找不到符号”

时间:2019-12-28 09:00:54

标签: android android-studio kotlin mvvm android-databinding

这里是Kotlin的新手,请耐心等待。我从使用Android Studio中的片段的默认Kotlin应用程序开始。我遵循了here中的数据绑定教程,也简要介绍了其他许多教程:我已经在build.gradle中启用了数据绑定,创建了一个扩展BaseObservable的POJO(称为RestClientSettings),并将工具片段切换为数据绑定布局:

...

<data class="ToolsBinding">
    <variable name="model" type="com.example.tpm.ui.tools.RestClientSettings" />
    <variable name="viewModel" type="com.example.tpm.ui.tools.ToolsViewModel"/>
</data>

...

带有一个EditText,该文本正在使用我模型中的'host'属性:

...

    <EditText
                android:layout_weight="2"
                android:id="@+id/edit_host"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:ems="10"
                android:inputType="textPersonName"
                android:text="@={model.host}"
                tools:layout_editor_absoluteX="187dp"
                tools:layout_editor_absoluteY="45dp" />

...

最后在我的ToolsFragment:OnCreate中,我正在使用DataBinding util

...

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,    savedInstanceState: Bundle?
): View? {
    val toolBinder : ToolsBinding  = DataBindingUtil.inflate(inflater,R.layout.fragment_tools,container,false)
    return toolBinder.root
}

...

这是RestClientSettings类: ...

    package com.example.tpm.ui.tools

    import androidx.databinding.BaseObservable
    import androidx.databinding.Bindable
    import com.example.tpm.BR

    class RestClientSettings : BaseObservable() {

      var host: String = "0.0.0.0"
      @Bindable get() = field
      set(host) {
        field = host
        notifyPropertyChanged(BR.host)
      }

      var port: Int = 8080
      @Bindable get() = field
      set(port) {
        field = port
        notifyPropertyChanged(BR.port)
      }
    }

...

到目前为止还不错,但出现以下错误: RestClientSettings类中的“ *” 未解决的引用:BR ”和 在我的ToolsBindingImpl中,在onChageModel函数中的“ 无法解析符号宿主”:“ 否则,如果(fieldId == BR.host)”。

我还注意到,可能是真正的问题,在ToolsBindingImpl类的顶部,它尝试从ToolsBinding“ 公共类ToolsBindingImpl扩展ToolsBinding ”继承,我得到了错误:“ 无法从最终的'com.example.tpm.databinding.ToolsBinding'”继承

我在这里想念什么?

0 个答案:

没有答案