0

这里是 Kotlin 的新手,所以请多多包涵。我从使用 Android Studio 中的 Fragments 的默认 Kotlin 应用程序开始。我从这里开始学习数据绑定教程,但也学习了许多其他教程:我在 build.gradle 中启用了数据绑定,创建了一个扩展 BaseObservable(称为 RestClientSettings)的 POJO,并将我的工具片段切换到数据绑定布局:

...

<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:

...

    <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 函数中:“ else if (fieldId == BR .host) ”。

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

我在这里想念什么?

4

0 回答 0