android - 视图绑定适用于一种布局,但不适用于另一种布局
问题描述
android 开发的新手,我正在尝试应用视图绑定,因为它们是谷歌目前推荐的视图引用方法。我有两个布局 content_main.xml 和 content_note_list.xml。我得到了第一个'content_main_xml'(MainActivity)来使用视图绑定。但是,我在为第二个“content_note_list.xml”实现视图绑定时遇到了麻烦。
下面是在模拟器中不断使应用程序崩溃的代码 这 是代码块的图像
它在我不使用视图绑定时起作用,即。
setContentView(R.layout.activity_note_list)
但是一旦我尝试使用视图绑定,它就会打开应用程序并立即崩溃
setContentView(binding.root)
我不知道我做错了什么,我按照官方android开发网站提供的描述,多个视频。任何帮助都是必要的。
编辑: content_note_list.xml activity_note_list.xml
为附加图像文件道歉,当我尝试附加它时,代码变得一团糟。
解决方案
好像是这个名字。从android 文档中记住。如果您的布局是result_profile.xml
<LinearLayout ... >
<TextView android:id="@+id/name" />
<ImageView android:cropToPadding="true" />
<Button android:id="@+id/button"
android:background="@drawable/rounded_button" />
</LinearLayout>
ViewBinding 将生成ResultProfileBinding
.
如果为模块启用了视图绑定,则会为模块包含的每个 XML 布局文件生成一个绑定类。每个绑定类都包含对根视图和所有具有 ID 的视图的引用。绑定类的名称是通过将 XML 文件的名称转换为 Pascal 大小写并在末尾添加单词“Binding”来生成的。
所以,考虑到这一点。如果您的布局是activity_note_list
,它将生成 ActivityNoteListBinding 类或类似的东西。在您的代码中,您正在设置ContentNoteListBinding
类。尝试替换ContentNoteListBinding
为ActivityNoteListBinding
. 此外,如果它不能解决问题。尝试从控制台日志添加代码。它有更多关于错误的细节。
更新
如果您想处理包含在您的活动/片段上<include>
标签中的 View 或 ViewGroup,您几乎可以直接访问这些视图。您需要在此标签中添加一个 Id <include>
。然后您将可以访问这些组件:例如:
这是一个activity_note_list.xml
........
<include
id="+@id/ly_content_list_note"
layout="@layout/content_list_note"/>
........
和 content_note_list.xml
<listView
id="+id/listNotes"
.......
/>
现在在您的 Activity 类中,您可以通过以下方式访问:
binding.lyContentListNote.listNotes
如您所见,首先直接访问容器的 id,即容器中的ly_content_list_note
所有视图组件,在本例中为listNotes
.
推荐阅读
- oracle - 架构更改通知
- julia - 在 Julia 中使用 Arrow.jl 进行数据压缩
- sql - 获取从 SQL 数据库中选择的特定表的大小
- laravel - 颤振创建新帐户按钮不起作用
- android - 设置 admob 后,我的应用程序崩溃而没有错误
- angular - IN-MEMORY WEB API 库,Angular 前端和后端
- jquery - 为什么当我尝试更新对象时在我的函数中出现此错误
- java - gatt.writeDescriptor() 一直返回 false:
- java - 如何区分java中的注销和超时会话
- r - R shiny 3 selectInput 与“All”选项同时添加反应性