多个类定义attr属性重复的问题:Attribute "xxx" has already been defined

如果从单独开发app的话,可能不会遇到多个自定义类的attribute 的名字重复的问题。但是如果是团队合作开发的话,可能会碰到这样的问题,A和B自定义的两个类都用了同一个名字来定义属性,这时系统会报出警告,Attribute
"xxx" has already been defined. A和B又都不想修改自己的名字,这时就很头痛。

下面举个例子,在values文件夹下定义一个上面的attrs.xml的文件,eclipse即会报错:Attribute
"icon" has already been defined。因为在PreferenceHeader, Preference两个属性集里定义了两个相同的属性。

<? xml version = "1.0" encoding = "utf-8" ?>
< resources >
     < declare-styleable name= "PreferenceHeader" >
        <!-- Identifier value for the header. -->
        < attr name= "id" format = "integer"/>
        < attr name= "icon" format = "integer" />
        <!-- The fragment that is displayed when the user selects this item. -->
    </declare-styleable >
    < declare-styleable name= "Preference" >
        < attr name= "icon" format = "integer" />
        <!-- The key to store the Preference value. -->
        < attr name= "key" format = "string" />
    </declare-styleable >
</ resources >

解决方案:

1.在xml文件里前面先声明属性

2.然后在属性集合里引用声明的属性即可。

以上面的文件为例来修改,如下:

<? xml version = "1.0" encoding = "utf-8" ?>
< resources >
     < attr name = "icon" format = "integer" />
     < declare-styleable name= "PreferenceHeader" >
        <!-- Identifier value for the header. -->
        < attr name= "id" format = "integer"/>
        < attr name= "icon" />
        <!-- The fragment that is displayed when the user selects this item. -->
    </declare-styleable >
    < declare-styleable name= "Preference" >
        < attr name= "icon"  />
        <!-- The key to store the Preference value. -->
        < attr name= "key" format = "string" />
    </declare-styleable >
</ resources >
时间: 2024-11-06 01:21:17

多个类定义attr属性重复的问题:Attribute "xxx" has already been defined的相关文章

python 反射 动态导入模块 类attr属性

1.反射 hasattr getattr delattr setattr 优点:事先定义好接口,接口只有在被完成后才能真正执行,这实现了即插即用,这其实是一种“后期绑定”,即先定义好接口, 然后是再去实现具体的功能 print(hasattr(p, 'age')) # True 是否有属性 判断 print(getattr(p, 'name', '没有找到该参数')) # get属性值 print(getattr(p, 'name1', 'False')) # False setattr(p,

java基础—继承题目:编写一个Animal类,具有属性:种类;具有功能:吃、睡。定义其子类Fish

编写一个Animal类,具有属性:种类:具有功能:吃.睡.定义其子类Fish package zhongqiuzuoye; public class Animal { //属性 private String type; public String getType() { return type; } public void setType(String type) { this.type = type; } //功能 public void eat() { } public void sleep

PHP 如何定义类、成员属性及其操作与魔术方法

PHP 类的定义与属性 一.类的定义类的关键字定义使用 class :例:class test{ } 二.类的属性与方法 class test{ $name = 'LH' ; //成员属性........ //成员方法........public function t1(){ } }三.定义一个不能继承的类 final class test{ }//final关键字只能修饰类和方法.不能用来修饰成员属性! 四.类.成员属性及方法的声明 1.public //公用的 表示全局的,类内部外部子类都可

只能从脚本中调用在类定义上有[ScriptService]属性的Web服务问题的解决方案

ajax调用webservice中的接口时, 会出现[只能从脚本中调用在类定义上有[ScriptService]属性的...]的异常. 这是因为, 在.net3.5中, 访问web服务, 要对web服务添加修饰: [System.Web.Script.Services.ScriptService]

【原】不定义Order属性,通过切面类的定义顺序来决定通知执行的先后顺序

[结论] 若不同切面类执行时,在没有定义“order属性”,而且切面类中触发增强通知的切入点都相同,则在切面类中的通知的执行顺序与该切面类在<aop:config>元素中“声明的顺序”相关,即先声明的切面类先执行,后声明的切面类后执行. [代码示例] 1 <aop:config> 2 <!-- 用户自定义的切面01,用于不同切面类执行顺序的测试 --> 3 <aop:aspect id="myMethod01Aspect" ref="

javascript构造函数类和原型prototype定义的属性和方法的区别

1.把方法写在原型中比写在构造函数中消耗的内存更小,因为在内存中一个类的原型只有一个,写在原型中的行为可以被所有实例共享,实例化的时候并不会在实例的内存中再复制一份而写在类中的方法,实例化的时候会在每个实例中再复制一份,所以消耗的内存更高所以没有特殊原因,我们一般把属性写到类中,而行为写到原型中2.构造函数中定义的属性和方法要比原型中定义的属性和方法的优先级高,如果定义了同名称的属性和方法,构造函数中的将会覆盖原型中的代码如下: <!DOCTYPE html> <html> <

PHP如何定义类及其成员属性与操作

1.类的定义: 类的关键字定义使用class 1.定义一个空类 Class Person{}; 2.定义一个有成员属性和操作的类 Class Person{ //成员属性 $name     =  ''; //操    作 protected function getActionName() { return $this->name; } } 3.定义一个不能被继承的类,使用final关键字 Final class Person{ 成员属性........ 操    作........ } 4.

类内置的attr属性

python类的内置attr属性 class Foo: x=1 def __init__(self,y): self.y=y def __getattr__(self, item): print('----> from getattr:你找的属性不存在') def __setattr__(self, key, value): print('----> from setattr') # self.key=value #这就无限递归了,你好好想想 # self.__dict__[key]=valu

类和对象,类定义了对象的特征和行为。属性,方法。

1.编写一个ATM机类,有属性:所属银行.显示余额.,有方法:取款.存款.查询余额 /* * 取款机实体类 * ATM */public class ATM {    String affiliatedBank;// 声明所属银行    String keyboard; // 键盘    Double displayBalance; // 显示余额    String horn; // 喇叭    // 无参构造函数 public ATM() { } /*     * 封装属性,getXXX()