首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >找不到symbol CountriesFragmentBindingImpl

找不到symbol CountriesFragmentBindingImpl
EN

Stack Overflow用户
提问于 2020-04-13 08:12:23
回答 2查看 203关注 0票数 1

无论更改是什么,我在构建项目时都无法摆脱这个错误。有人能帮我解决这个问题吗?

我还在app.gradle中添加了数据绑定enabled = true,这并没有解决我的问题。

这是我的countries_fragment.xml

代码语言:javascript
复制
<?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">

    <data>

        <import type="android.view.View" />


        <variable
            name="viewmodel"
            type="com.example.android.covidupdates.CountriesViewModel" />

    </data>


            <RelativeLayout
                android:id="@+id/tasks_container_layout"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical">

                <LinearLayout
                    android:id="@+id/tasks_linear_layout"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:orientation="vertical"
                    android:visibility="@{viewmodel.dataLoading ? View.GONE : View.VISIBLE}">

                    <androidx.recyclerview.widget.RecyclerView
                        android:id="@+id/tasks_list"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
                        app:items="@{viewmodel.countries}" />
                </LinearLayout>


            </RelativeLayout>

</layout>

这是CountriesFragment.kt

代码语言:javascript
复制
class CountriesFragment : Fragment() {
private val viewModel by viewModels<CountriesViewModel> { ViewModelFactory(this) }
private lateinit var viewBinding : CountriesFragmentBinding
companion object {
    fun newInstance() = CountriesFragment()
}



override fun onCreateView(
    inflater: LayoutInflater, container: ViewGroup?,
    savedInstanceState: Bundle?
): View? {
    viewBinding = CountriesFragmentBinding.inflate(inflater, container, false).apply {
        viewmodel = viewModel
    }
    return viewBinding.root
}

override fun onActivityCreated(savedInstanceState: Bundle?) {
    super.onActivityCreated(savedInstanceState)
    viewBinding.lifecycleOwner = this.viewLifecycleOwner
}

}

还有我的ViewModelFactory.kt

代码语言:javascript
复制
class ViewModelFactory constructor(
    owner: SavedStateRegistryOwner,
    defaultArgs: Bundle? = null) : AbstractSavedStateViewModelFactory(owner, defaultArgs) {

override fun <T : ViewModel> create(
        key: String,
        modelClass: Class<T>,
        handle: SavedStateHandle
) = with(modelClass) {
    when {
        isAssignableFrom(CountriesViewModel::class.java) ->
            CountriesViewModel()
        else ->
            throw IllegalArgumentException("Unknown ViewModel class: ${modelClass.name}")
    }
} as T

}

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-13 21:01:50

我猜您的问题出在这一行的xml中:

代码语言:javascript
复制
app:items="@{viewmodel.countries}"

当您在xml中遇到问题时,数据绑定可能会在构建期间生成类CountriesFragmentBindingImpl的过程中给出错误。

也许this discussion会对你有所帮助。我可以推荐的-是在Adapter的帮助下实现在RecyclerView中设置项目的常用方法

票数 2
EN

Stack Overflow用户

发布于 2020-04-13 23:48:36

您是否在应用程序级别的build.gradle文件中添加了apply plugin: 'kotlin-kapt'。您也可以在here上签出示例以供参考。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61179858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档