问题标签 [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 投票
9 回答
35495 浏览

android - 如何在 Android 中使用视图绑定

我一直在使用findViewById然后 ButterKnife 来绑定视图。最近,我看到了这篇文章:https ://proandroiddev.com/new-in-android-viewbindings-the-difference-from-databinding-library-bef5945baf5e ,我不太清楚如何使用它。

我试过这样做,但它似乎在 Android Studio 3.4.2 中不起作用

val binding = MainActivityBinding.inflate(layoutInflater) setContentView(binding.root)

然后使用这些值,例如:

binding.button....

binding.textView....

0 投票
3 回答
35567 浏览

android - Android:DataBinding 和 ViewBinding 的区别

自 Jetpack 发布以来,我们一直在使用DataBinding 。Android 文档表明在Android Studio 3.6 Canary 11+中添加了ViewBinding 。

我阅读了文档,但它看起来类似于DataBinding。

谁能解释这两个概念之间有什么区别?

0 投票
4 回答
9612 浏览

android - 视图绑定不适用于“包含”:不兼容的类型:ProgressBarLayoutBinding 无法转换为 ViewDataBinding

安卓工作室 3.6。金丝雀 12

构建.gradle:

在 app/build.gradle 中:

在布局 xml 中:

这里progress_bar_layout.xml

这里是 CoroutinesRetrofitActivity.kt

但是当我尝试构建时出现错误:

但是如果我从 xml 中删除这个:

然后错误消失了。

有什么问题progress_bar_layout

如果我直接在布局中包含进度条,如下所示:

问题消失了。

为什么include不工作?

0 投票
2 回答
1175 浏览

android - Android 3.6 ViewStubProxy 未解析参考

我有这个 Kotlin 代码:

这在我的 XML 文件中:

当我编译 Android Studio 时报告以下错误:

  • 未解决的参考:isInflated
  • 未解决的参考:viewStub
  • 未解决的参考:viewStub

我正在使用来自 Google 的新 ViewBinding 我正在使用 Android Studio 3.6 Canary 12、Gradle 3.6.0-alpha12 开发。这是 Android Studio 的错误还是我的错误?

0 投票
2 回答
4267 浏览

java - 在 Fragment 中使用 Kotlin ViewBinding 时出现 NullPointerException

我正在尝试使用 kotlin 视图绑定将点击侦听器添加到我的片段内的按钮。我在 onCreateView 方法中设置点击监听器。当我这样做时,我得到一个空指针异常,因为尚未创建按钮。我认为 kotlin 视图绑定负责视图初始化,所以按钮不应该为空?

这是我的代码:

这是一个例外:

0 投票
4 回答
18409 浏览

android - ViewBinding vs Kotlin Android Extensions 与合成视图

新的ViewBinding与带有合成视图绑定的Kotlin Android 扩展相比如何?

除了新的 ViewBindings 提供的 NullSafety 和 TypeSafety 之外,我们为什么要考虑放弃 Kotlin 在 Views 上使用合成绑定的方式?

新的 ViewBinding 是否更高效,因为它预先生成了 Binding 类?

0 投票
3 回答
4159 浏览

java - 将 ViewBinding 与多个布局一起使用

编辑 - 解决方案

使用视图绑定时,会为每个 xml 生成一个 Java 绑定文件。问题是当您修改 xml 时,它不会重新生成 Java 文件。因此,当我在 activity_main.xml 中向 App_bar_main 添加一个 ID 标记时,我收到一条错误消息,指出它找不到该标记,不是因为它不喜欢它,而是因为它仍在使用较旧的 Java 文件。使缓存无效并重新启动也不会影响那些生成的 java 绑定文件。

重新生成文件的唯一方法是删除它们。

使用添加的 ID,我只需要使用它的 ID 调用 appBarMain,而不是尝试扩展它的布局。

activity_main.xml

谢谢大家的贡献

原来的

我正在尝试将findViewById我的应用程序中的调用切换到新添加的调用,ViewBinding但是在与调用的视图以外的视图交互时遇到问题setContentView()

我膨胀AppBarMainBinding的方式错了吗?还是我错过了其他东西?

activity_main.xml包含和<include layout="@layout/app_bar_main" />菜单

app_bar_main.xml包含一个工具栏和一些操作按钮

在这种情况下,如果我setContentView(mActivityMainBinding.getRoot())在主 Activity 的 onCreat() 中调用,应用程序会启动activity_main布局并显示操作按钮和工具栏占位符,但这些按钮都不起作用。单击操作按钮不会调用它setOnClickListener并且工具栏是空白的(它没有实现setSupportActionBar(toolbar)

activity_main.xml

app_bar_main.xml

谢谢

0 投票
1 回答
320 浏览

android - Kotlin 如何在没有 viewBinding.enabled = true 的情况下找到小部件?

安卓工作室 3.6

Android Studio 3.6中的一项新功能是

方法#1

在 build.gradle 中:

在 app/build.gradle 中:

我在 Kotlin 上的活动片段(方法#1

这是我的qr_bluetooth_swipe_activity.xml

结果它工作正常。正如你所看到的,我使用这个:

没有使用方法findViewById

好的。

但我可以用另一种方法解决这个问题

方法#2:

app/build.gradle块中删除viewBinding.enabled = true

像这样更改我在 Kotlin 上的活动(方法#2):

结果它工作正常。正如你所看到的,我使用这个:

没有使用方法findViewById

好的。

但问题是:

方法#2中,绑定如何在没有的情况下工作

?

0 投票
1 回答
44 浏览

android - 无法隐藏项目编程

安卓工作室 3.6

在 app/build.gradle 中:

在我的活动中:

在我的qr_bluetooth_swipe_activity.xml

我想以编程方式隐藏blueToothBottonContainer。所以我试试这个:

但没有找到类似 smt 的方法setVisible

为什么?

0 投票
22 回答
22564 浏览

android - java.lang.NullPointerException:缺少 ID 的必需视图:

安卓工作室 3.6

在 app/build.gradle 中:

这是我的xml:

和另一个 xml unclude prev。xml:

这是我的活动:

该应用程序已构建并运行。好的。

现在我移动 id - android:id="@+id/bluetoothBottonMainContainer"

像这样的外部容器:

应用程序已构建,但运行时我在此行中收到运行时错误:

错误: