问题标签 [android-viewbinding]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
615 浏览

android - Android 多个 Progressbar 实例未正确更新

我有一个自定义视图,其中有一个进度条。自定义视图有一个进度条,标题和文本进度为“1/5”。我在几个地方使用了这个 CustomView (ProgressBadgeWidget),包括在我的项目布局中的两次 RecyclerView (item_levels.xml - 为此简化):

ProgressBadgeWidget 的 xml 布局如下:

很简单,如前所述。主要部分是 EZColorProgressBar,它是 ProgressBar 的子类,仅提供更改条形颜色的方法以及设置进度和最大值的方法:

我在几乎所有的 Fragment 上都使用 ProgressBadgeWidget 和 EZProgressBar。当我在片段之间移动并向后导航时,进度条并不总是正确显示它们的数字,即第一次 0/5 将正确显示,然后导航到使用此 EZProgressBar 的其他页面并向后导航将显示 1/5,即使文本有 0/5。

第一次导航: 在此处输入图像描述

之后:数据模型支持进度条正确(从0/5可以看出是正确的)。看起来它正在应用另一个进度条中的 3/11

在此处输入图像描述

发生这种情况时,它实际上将不正确的进度条编号应用于布局中的所有进度条(即 recyclerview 适配器中 item_level 的所有项目中的每个进度条,甚至在单独的片段中,因此它不与 recyclerview 绑定。)但同样所有文本“x/x”的显示正确。

我试过使用 kotlin 合成绑定和谷歌视图绑定。感觉就像进度条的单独实例(它们是分开的,因为我打印了哈希码)它们指向同一个进度条,因为它正在搜索基于 ID 的视图。ProgressBadgeWidgets 具有唯一的 ID,但它们嵌套的进度条具有相同的 ID。

有没有人遇到过这样的问题和/或专门针对 Android 进度条的问题?

0 投票
3 回答
287 浏览

android - Android ViewBinding 无法渲染 LinearLayout 配置

ViewBinding 实现无法呈现LinearLayout在我的代码中使用的布局配置,而相同的布局适用于旧的技术findViewById()

我已经设置了 gradle 以使用 ViewBinding

以下是使用LinearLayout

activity_main.xml

对应的 Kotlin 类包括绑定实例及其根视图传递给setContentView()

MainActivity.kt

虽然布局编辑器呈现应用程序的正确对齐方式,但一旦将其启动到模拟器上,布局配置(例如使用ofcenter_vertical设置的对齐方式)将被忽略。layout_gravityLinearLayout

ViewBinding 的实现方式是否不正确或缺失?

0 投票
0 回答
480 浏览

android - Android View Binding -> CoordinatorLayout 不能转换为 DrawerLayout

这是我得到的例外:

java.lang.ClassCastException: androidx.coordinatorlayout.widget.CoordinatorLayout$LayoutParams 无法转换为 androidx.drawerlayout.widget.DrawerLayout$LayoutParams

问题是,被“投射”的视图是抽屉布局。

我错过了什么?

调试

为了冗长,我添加了演员表。

例外

这是有问题的drawerLayout

还有抽屉

0 投票
2 回答
632 浏览

android - 如何使用 ViewBinding 为 RecyclerView 创建 BaseAdapter?

我想使用 ViewBinding 为 RecyclerView 创建一个 BaseAdapter 类,但是当我尝试以下代码时:

我收到一个错误:

java.lang.IllegalStateException:创建时不得附加 ViewHolder 视图。确保您没有将“true”传递给 androidx.recyclerview.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:6796) 的 LayoutInflater.inflate(..., boolean attachToRoot) 的 attachToRoot 参数

我很困惑,无法找出原因。我该如何解决?

0 投票
1 回答
2222 浏览

android - 如何将 Android ViewBinding 用于从现有布局扩展的自定义视图

我看到有对 Activity 和 Fragment 的 ViewBinding 支持。但是自定义视图呢?

我的自定义视图喜欢这样:

我尝试创建 ViewBinding 但它不起作用。

你有自定义视图的 ViewBinding 解决方案吗?

0 投票
1 回答
1241 浏览

firebase - 如何解决错误:在 Android Studio 中找不到符号导入 androidx.appcompat.widget.RecyclerView

我的项目运行良好,但是当我将 google play services 版本更新为 15.0.0 并将 firebase 添加到项目中时,出现以下错误:

找不到RecyclerView符号android

它说错误:找不到符号导入androidx.appcompat.widget.RecyclerView,我找到了另一个有相同问题的线程,但没有准确说明情况,所以我决定发布一个新问题。

这是我的 Gradle 依赖项:

另一个对我没有帮助的问题和答案相同的线程地址是 StackOverflow 上的类似线程

我一直在尝试的其他一些解决方案:-使缓存无效并重新启动-清理构建

另一个项目依赖项是 smartlocation,它也需要 google play 服务,这里是这个模块依赖项的 gradle 文件:

0 投票
1 回答
390 浏览

android - Android资源链接使用失败:buildFeatures {viewBinding = true}

今天开了一个android studio后,遇到了一个奇怪的问题。它在说

DSL 元素 'android.viewBinding.enabled' 已过时,已 替换为 'android.buildFeatures.viewBinding'。

搜索了一下后我发现我必须使用

buildFeatures {viewBinding = true}

反而。所以,我用上面的替换了 viewBinding{enabled=true}。在那之后,真正的问题开始了。AAPT 无法再检测到我的可绘制对象。这是我的构建脚本:

和 build.gradle

我不知道发生了什么事了。任何建议都会有很大帮助。

0 投票
9 回答
15195 浏览

android - 如何将 ViewBinding 与抽象基类一起使用

我开始使用 ViewBinding。在搜索了一些示例或建议如何将 ViewBinding 与抽象基类一起使用后,该抽象基类应处理预期出现在每个子布局中的视图的相同逻辑,我最终在此处发布了此问题。

场景:
我有一个基类public abstract class BaseFragment。有多个片段扩展了这个基类。这些片段具有从基类实现处理的公共视图(使用“旧” findViewById())。例如,每个片段的布局都应该包含一个 ID 为 text_title 的 TextView。BaseFragment以下是从's处理它的方式onViewCreated()

现在 ViewBinding-API 为每个子片段生成绑定类。我可以使用绑定来引用视图。但我不能使用基类中的具体绑定。即使在基类中引入了泛型,也有太多类型的片段绑定,我暂时放弃了这个解决方案。

从抽象基类处理绑定视图的推荐方法是什么?有没有最佳实践?没有在 API 中找到一种内置机制来优雅地处理这种情况。

当期望子片段包含公共视图时,我可以提供抽象方法,从片段的具体绑定返回视图,并使它们可以从基类访问。(例如protected abstract TextView getTitleView();)。但这是一个优势而不是使用findViewById()?你怎么看?还有其他(更好的)解决方案吗?请让我们开始一些讨论。

0 投票
3 回答
537 浏览

android - 生成的 ViewBinding 的父类是什么?

我正在尝试干掉我的代码,并且我有几个活动使用相同的代码块,我想将它们移入父活动中的方法中。问题是这段代码使用生成的 ViewBindings 是唯一的类,我无法弄清楚父类是什么,以便将其用作方法参数。

例如,这段代码在两个不同的活动中,唯一的区别是一个活动绑定 = Activity1Binding,另一个是 Activity2Binding。他们共享一些具有相同 ID 的视图。

如果可能的话,我想在父活动中实现类似的东西以防止重复代码:

0 投票
1 回答
627 浏览

android - 将 Android Studio 更新到 4.0 后,Android View Binding 库出错

昨晚我升级了我的 Android Studio 4.0,它在 View Binding 中显示错误。我在我的 Gradle 中尝试了以下代码。但它显示这样的错误,