在4.0平台定制widget开发过程中,因为要往源码中加入资源,遇到一个问题,问题的log没有记录下来,大体上就是讲,类型转换有问题。比如,一个button控件,findViewById后,转换类型当然要为button,但是根据这个button找到的控件,嘿,它不是button,它是个checkbox。这就有问题。有问题当然是要去找为什么会发生问题。经过R.java的查找,发现这两个控件的资源id是相邻的,比如button的id是42,checkbox的id就是43。
先来看看我都加了些什么资源:8张图片,放到drawable里面,类型style,主题theme还有attr,供上层使用的id在public.xml里面定义了。
我是怎么加的呢?图片直接定义为对应功能名字,这个没什么问题。style放到了styles.xml中间;主题theme也放到了theme.xml中间。public.xml中添加放到最后,数值为相应类型最大值然后+1。
找来找去,在style.xml和theme.xml的文件中发现这样一段话:
<!--
===============================================================
PLEASE READ
===============================================================
The Holo themes must not be modified in order to pass CTS.
Many related themes and styles depend on other values defined in this file.
If you would like to provide custom themes and styles for your device,
please see styles_device_defaults.xml.
===============================================================
PLEASE READ
===============================================================
-->
这段话我在2.3源码中是没有看到的。也就是我把style和theme加到人家说你别加的地方,出了点问题。
通过看SDK编译出的android.jar中R.java可以知道,R.java中的资源都是在public.xml中定义提供给上层使用的。这些id值在SDK中定义的大小要与系统生成的大小一致。如何一直,当然就是现在的形式:赋予一个固定的值。有了这个固定静态的值,你怎么折腾都不会有问题。其它资源在aapt生成id的时候,会跳过public.xml中已经使用的值。
除了public.xml中定义过的资源,其它的资源都是自动分配id,而且也都是在系统代码中使用的。这就是我今天的疑问所在。系统代码使用这些资源时,实际与我们app开发一样,是R.**.***这样的方式获得R.java相应的数值,并没有经过外部数值对应的转换。那如果是这样,为何出现了开头我提到的问题。style强调添加规则又是为了哪里着想?
小妹初学乍到,所知甚少,求各位大神鼎力相助,不胜感激。。。。
分享到:
相关推荐
7. **社区支持**: Zend Framework 有一个活跃的开发者社区,提供各种教程、示例代码和问题解答,对于遇到的未汉化部分,可以借助社区资源来解决。 8. **升级与迁移**: 随着技术的发展,Zend Framework 后续发布了2....
9. **社区活跃**:Play Framework有一个活跃的社区,提供了丰富的插件和示例,便于开发者解决遇到的问题。 10. **版本迭代**:Play Framework 不断更新,引入新的特性和改进,保持与现代Web技术的同步。 在“play...
3. "sxs" - 这可能是指系统的“ Side-by-Side (SxS) ”组件存储,这部分通常与.NET Framework 3.5的依赖关系有关。在某些情况下,当系统缺少这些组件时,安装.NET Framework 3.5会失败。这个文件或文件夹可能包含了...
标题中的"Framework4.7安装包及补丁"指的是微软的.NET Framework 4.7,这是一个用于Windows操作系统的软件开发框架,它包含了运行.NET应用程序所需的各种组件和服务。开发者使用.NET Framework可以编写出跨平台的...
- 开发过程中难免会遇到各种问题,这要求工程师具备较强的问题定位和解决能力。 - 需要熟练掌握调试工具和技术,能够迅速定位问题所在并采取有效措施进行修复。 #### 四、任职要求分析 1. **教育背景** - 大专...
1. **获取汉化资源**:你可以从社区或者开源项目中寻找已经完成的汉化资源,如 GitHub 上的相关项目,或者 Robot Framework 的官方文档中查找是否有相关的语言包。如果没有现成的资源,你可能需要自己翻译这两个文件...
在Windows Server 2012上安装.NET Framework 3.5时,可能会遇到一个问题,即系统需要SXS(Side-by-Side)源文件来完成安装。SXS文件包含了系统运行库和组件的副本,确保不同版本的组件可以并存,避免了版本冲突。 ...
教程中的实例项目设置、序列化器编写、视图集使用等,都是在真实开发环境中会遇到的场景,非常具有参考价值。 需要注意的是,教程中提到的技术版本较旧,Django和Django-REST-framework可能已经有了新的版本和API...
描述中提到的情况,即".NET Framework出问题了,卸载不掉",可能是由于各种原因,如安装过程中的中断、文件损坏或者与其他软件的冲突,导致标准的卸载程序无法正常工作。此时,专用的清理工具能够扫描和定位与.NET ...
在日常的软件使用过程中,有时我们需要卸载.NET Framework以解决安装问题或腾出系统资源。手动卸载.NET Framework可能涉及到多个组件和服务,过程复杂且容易出错。这时,.NET Framework卸载工具就显得尤为重要,它为...
.NET Framework 清理工具是一款专为用户设计的实用程序,旨在帮助用户从计算机中完全移除.NET Framework的相关组件。在日常使用中,由于各种原因,如安装不同版本的.NET Framework、软件冲突或更新失败,可能会导致...
使用.NET Framework 4清理工具时,用户需要确保已备份好所有相关的应用程序和设置,因为清理过程可能会删除与.NET Framework关联的数据。通常,这个工具会扫描系统,找出所有相关的组件,然后安全地卸载它们。清理...
.NET Framework是微软开发的一个软件框架,它为开发者提供了一个用于构建、部署和运行应用程序和Web服务的统一平台。XP操作系统虽然较旧,但仍然有可能安装.NET Framework 4.0,以便运行依赖此版本的软件。在Windows...
JThink是为了解决JAVA应用系统在开发过程中的一系列问题所发起的一个框架。她的主要目的是用于解决JAVA/J2EE应用系统中业务逻辑层面中反复遇到的问题。JThink包括以下几部分内容:资源管理,请求处理,事务处理,...
"起点下载.url"和"酷猴手游.url"可能是推广链接,与.NET Framework 4.0.30319本身关系不大,但可能指向相关软件或资源下载。而"hao123安全上网.url"可能是一个安全浏览的推荐网址,提醒用户在安装和使用过程中注意...
11. **卸载与修复**:如果遇到问题,用户可以通过控制面板中的“程序和功能”来卸载.NET Framework 4.2,或者使用“修复”选项尝试解决已安装框架的问题。 总之,.NET Framework 4.2是一个强大的开发平台,为64位...
在实际开发过程中,开发团队需要密切协作,充分利用开源社区资源,解决遇到的各种技术难题。同时,也需要关注市场趋势和用户需求变化,及时调整开发方向,确保最终产品能够获得市场的认可和用户的喜爱。
.NET Framework 1.1 作为早期版本之一,在某些系统上可能会遇到安装过程中的各种问题。本文将详细介绍当用户在安装 .NET Framework 1.1 时遇到 System.EnterpriseServices.dll 动态组件卡顿的问题及其解决方法。 ##...
.NET Framework 是微软开发的一个全面的开发平台,它包含了运行应用程序所需的各种组件,包括公共语言运行时(Common Language Runtime, CLR)和类库。这个框架为开发者提供了统一的编程环境,支持多种编程语言,如...