android - ViewBinding - 包含的布局绑定导致未解析的引用
问题描述
我正在我的一个片段中实现 ViewBinding。该片段包含如下布局:
...
<androidx.core.widget.NestedScrollView
android:id="@+id/sv_sudf_container"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintBottom_toTopOf="@+id/btn_sudf_continue"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/eav_sudf_avatar">
<include
android:id="@+id/l_sudf_details"
layout="@layout/layout_sign_up_details_fields"/>
</androidx.core.widget.NestedScrollView>
...
我遵循了这个答案,但它也不起作用。
为片段生成的视图绑定类在内部具有绑定,但是,属性的类型是View
. 当我然后引用View
使用binding.lSudfDetails
类型是LayoutSignUpDetailFieldsBinding
. 这种类型的来源我无法解决,因为没有生成具有该名称的类,但是我希望它会为其分配正确的绑定类型。这是FragmentSignUpDetailsBinding.java
.
@NonNull
public final View lSudfDetails;
然而,绑定都设置正确,它允许我在嵌套布局中引用视图,但是当我开始构建时,我得到了未解决的引用错误。当我这样引用它们时,Lint 不会抱怨:
binding.lSudfDetails.etSudfDob
但是,编译器确实会失败,并出现诸如此类的错误
未解决的参考:etSudfDob
绑定本身是根据Android 文档创建的:
private var _binding : FragmentSignUpDetailsBinding? = null
private val binding get() = _binding!!
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
_binding = FragmentSignUpDetailsBinding.inflate(inflater,container,false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.tvSudfWelcome.text = getString(R.string.sign_up_welcome,getString(R.string.app_name))
binding.lSudfDetails.etSudfDob.setOnClickListener {
showYearSelection()
}
}
该tvSudfWelcome
绑定适用于它不喜欢的嵌套绑定。
解决方案
如果您使用的是 Android Studio 3.6.0,有时 gradle 插件无法为包含的布局生成 ViewBinding 字段。请更新到 Android Studio 3.6.1 和 gradle 插件版本到 3.6.1。
推荐阅读
- javascript - R Shiny:使用闪亮的 JS 从 Datatable 获取信息
- sql - 连接中的行太多
- azure - 使用 MS Graph API 在 ADB2C 中重置没有 Directory.AccessAsUser.All 权限的用户密码
- java - 为什么kotlin没有按照android的要求为片段创建一个Required的空公共构造函数?
- snowflake-schema - 雪花外部阶段 - 错误访问被拒绝
- python - 时间序列分析,使用 Kwiatkowski–Phillips–Schmidt–Shin (KPSS) 检查平稳性
- date - Power BI 如何从日期中提取月份和年份
- javascript - 如何将页面上的 HTML 值乘以百分比 (15%)
- java - 千分尺@Timed for pojo中的方法不起作用
- python - 为什么执行 exec('print(x)') 而 print(x) 在此 python 代码中出错?