当前位置: 首页 > news >正文

Android——资源IDnonFinalResIds和“Attribute value must be constant”错误

一、异常描述

通过资源ID引用资源提示错误 Attribute value must be constant

二、解决方案

 在根目录下的文件 gradle.properties 中添加如下配置,然后Sync Project

android.nonFinalResIds=false

三、问题原因

android.nonFinalResIds 是Android开发中一个用于解决资源ID问题的机制。在Android应用程序中,所有的资源(例如,布局文件、图片、字符串等)都会在编译时被赋予一个唯一的资源ID,以便在代码中引用。

通常,这些资源ID被声明为 final ,这意味着它们在编译时就已经确定了,不能再被修改。然而,有时候在开发过程中,我们可能需要动态地修改这些资源ID,这就会导致“Attribute value must be constant”这样的错误,因为注解要求属性值必须是常量。

为了解决这个问题,Android引入了android.nonFinalResIds机制。通过在项目的gradle.properties

文件中添加android.nonFinalResIds = true,你可以将资源ID声明为非final的,从而允许在运行时动态修改它们。

需要注意的是,将android.nonFinalResIds设置为true会有一些限制和影响:

  1. 性能影响:由于资源ID不再是常量,运行时需要额外的计算来确定资源ID的值,这可能会对性能产生一定的影响。
  2. 不可预测性:动态修改资源ID可能会导致代码的行为变得不可预测,因为资源ID的值可能在运行时发生变化。

因此,在使用android.nonFinalResIds时应该谨慎考虑,确保你真正需要动态修改资源ID,并且了解潜在的风险和限制。如果可能的话,最好还是在设计和编码阶段就确定好资源ID,避免在运行时进行修改。

相关文章:

  • ELFK集群部署(Filebeat+ELK) 本地收集nginx日志 远程收集多个日志
  • 异常 Exception 练习题 (未完成)
  • 合并PDF出现OOM异常
  • Oracle SQL优化
  • 【小白进阶】Linux 调试大法——gdb
  • 软件测评中心▏软件集成测试和功能测试之间的区别和联系简析
  • 02、Tensorflow实现手写数字识别(数字0-9)
  • 在线文库系统 转码功能源代码展示 支持文档在线预览查阅功能
  • Linux “grep“ 命令
  • 【代码随想录】算法训练计划37
  • ctfshow刷题web入门--1--ljcsd
  • 键盘打字盲打练习系列之刻意练习——1
  • 异常数据检测 | Python实现孤立森林(IsolationForest)异常检测
  • RabbitMQ 安装(在docker容器中安装)
  • 微服务保护 Sentinel
  • Flannel解读
  • Git学习与使用心得(1)—— 初始化
  • java 多线程基础, 我觉得还是有必要看看的
  • JavaScript中的对象个人分享
  • js ES6 求数组的交集,并集,还有差集
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • Python学习笔记 字符串拼接
  • QQ浏览器x5内核的兼容性问题
  • vue总结
  • XForms - 更强大的Form
  • Zepto.js源码学习之二
  • 简单易用的leetcode开发测试工具(npm)
  • 前端性能优化--懒加载和预加载
  • 我是如何设计 Upload 上传组件的
  • 找一份好的前端工作,起点很重要
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • 如何用纯 CSS 创作一个货车 loader
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • ![CDATA[ ]] 是什么东东
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (一)Dubbo快速入门、介绍、使用
  • (转)Groupon前传:从10个月的失败作品修改,1个月找到成功
  • **PHP二维数组遍历时同时赋值
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .a文件和.so文件
  • .NET Core 版本不支持的问题
  • .NET core 自定义过滤器 Filter 实现webapi RestFul 统一接口数据返回格式
  • .net framework profiles /.net framework 配置
  • .NET Framework与.NET Framework SDK有什么不同?
  • .NET Micro Framework初体验
  • .NET Windows:删除文件夹后立即判断,有可能依然存在
  • .NET 常见的偏门问题