android - 将 BuildConfig.FLAVOR 与 android 数据绑定一起使用
问题描述
我在布局文件中使用了以下代码来根据应用程序的风格类型更改两种不同的视图可见性。我没有看到调试版本有任何问题,但我认为发布版本存在问题,因为据报道这两个视图在测试版本中都是可见的。知道为什么会发生这种情况吗?
<Switch
android:id="@+id/configuration_main_network_switch"
style="@style/networkSelector"
android:visibility="@{BuildConfig.FLAVOR.equals(`xxxx`) ? View.GONE : View.VISIBLE}"
android:text="@{configurationMainNetworkSwitch.checked ? @string/network_configuration_main_wifi_enabled_button : @string/network_configuration_main_wifi_disabled_button}" />
<TextView
android:id="@+id/configuration_main_network_switch_gone"
style="@style/networkSelector"
android:visibility="@{BuildConfig.FLAVOR.equals(`xxxx`) ? View.VISIBLE : View.GONE}"
android:text="@string/network_configuration_main_wifi_enabled_button"/>
解决方案
首先导入所需的数据类型:
<data>
<import type="com.acme.BuildConfig"/>
<import type="android.view.View"/>
</data>
然后可以在数据绑定语句中引用它们:
android:visibility="@{ BuildConfig.DEBUG ? View.VISIBLE : View.GONE }"
我还可以获得产品风味:
android:text="@{ BuildConfig.FLAVOR }"
也许被比较的字符串不匹配?
推荐阅读
- java - 命令行中的 Java Maven ClassNotFoundException
- python - Python:while循环中的If语句
- python - 如何使用 SWIG 从 C++ 无序映射生成 Python 字典?
- openssl - windows s_client 中的 openssl 错误(连接:没有这样的文件或目录,连接:errno=0)
- c# - c# json 不拉数据
- node.js - Node.js + 加密签名并通过 express 验证数据
- javascript - DOM 事件不会在 Angular 和 Jasmine 测试中分派
- javascript - 如何增加 API 中的下载次数
- authentication - 如何处理身份验证计数以符合 CQRS 模式?
- flutter - 未定义名称“冲突算法”