gpt4 book ai didi

android - 驼峰包名时的数据绑定(bind)库

转载 作者:行者123 更新时间:2023-11-29 02:18:32 26 4
gpt4 key购买 nike

我正在开发一个新版本的 android 应用程序,该应用程序已由一些以前的开发人员在市场上发布,其包名称为 com.mycompany.MyApp,我必须使用相同的包名称。

在我的项目中,我使用了数据绑定(bind)库,它需要包名称的小写符号,我一直收到“java.lang.IllegalArgumentException:无法猜测 com.mycompany.MyApp.databinding.MyFragmentRecyclerViewItemBinding”

然后根据官方文档和 SO 中的一些条目,我已经放置了

<data class="com.mycompany.MyApp.databinding.MyFragmentRecyclerViewItemBinding" ></data> 

定义在 my_fragment_recycler_view_item.xml 中的布局之上

现在我可以在 MyRecyclerViewFragment.kt 中导入类 MyFragmentRecyclerViewItemBinding 并访问 View 元素等,但是项目无法编译,因为无法编译自动生成的类 MyFragmentRecyclerViewItemBindingImpl。

Gradle 给出“java.lang.IllegalArgumentException:无法猜测 com.mycompany.MyApp.databinding.MyFragmentRecyclerViewItemBindingImpl”我可以在 MyFragmentRecyclerViewItemBindingImpl 类中看到错误“无法从最终的‘com.mycompany.MyApp.MyFragmentRecyclerViewItemBinding’继承”

我想这是因为在 Kotlin 中所有类都是默认的最终类,但无论如何我都被困在这里。您有什么建议吗?或者您能看出我做错了什么吗?

提前感谢所有阅读、评论和回答。我不能直接分享代码,但符号代码如下;

MyRecyclerViewFragment.kt

import com.mycompany.MyApp.databinding.MyFragmentRecyclerViewItemBinding

class MyRecyclerViewFragment: Fragment()
{
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val fragmentIntroSlidePage = MyFragmentRecyclerViewItemBinding.inflate(inflater,
container, false)
//TODO ..
return fragmentIntroSlidePage.root
}
}

my_fragment_recycler_view_item.xml

<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data class="com.mycompany.MyApp.databinding.MyFragmentRecyclerViewItemBinding">

</data>

<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/myBgColor"
android:orientation="vertical">


<ImageView
android:id="@+id/slide_bg_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:contentDescription="@string/intro_slide_1_text"
android:scaleType="fitXY"
android:src="@drawable/intro_slide_01"
app:layout_constraintHeight_min="150dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

</layout>

自动生成类

package com.mycompany.MyApp.databinding;

public class MyFragmentRecyclerViewItemBindingImpl extends MyFragmentRecyclerViewItemBinding {
...

最佳答案

"java.lang.IllegalArgumentException: couldn't make a guess for com.mycompany.MyApp.databinding.MyFragmentRecyclerViewItemBindingImpl"

基本上,此异常表明不能简单地在数据绑定(bind)中通过数据变量传递的对象的包名称中使用大写名称​​(驼峰大小写)

因此解决方案是将包名设为小写以解决此问题。对于 O.P. 的情况,可以通过将 MyApp 重命名为 myapp 或其他方便的名称来解决。

因此最终结果将是:

<data class="com.mycompany.myapp.databinding.MyFragmentRecyclerViewItemBinding">

关于android - 驼峰包名时的数据绑定(bind)库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58169816/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com