这里是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'”继承
我在这里想念什么?