Я работал над пользовательским элементом управления для Android, и хотя я пытался сделать то, что предлагается здесь, кажется, что-то, что я делаю неправильно.
Вот мой код, чтобы узнать, может ли кто-нибудь обнаружить проблему:
MyComponent.java
public MyComponent(Context context, AttributeSet attrs)
{
super(context);
TypedArray arr = context.obtainStyledAttributes(attrs, R.styleable.MyComponent);
CharSequence myId = arr.getString(R.styleable.MyComponent_identifier);
if (myId != null)
{
this.setIdentifier(myId.toString());
}
Integer cds = arr.getInteger(R.styleable.MyComponent_cd_number, 0);
if(cds != null)
{
this.setCds(cds);
}
arr.recycle();
}
attrs.xml
main.xml
...
...
Когда я вставляю это, я получаю следующие ошибки:
error : Не найден идентификатор ресурса для атрибута "cd_number" в пакете "my.test.package" ошибка: не найден идентификатор ресурса для атрибута 'identifier' в пакете 'my.test.package'
Если я изменю свое пространство имен на что-то вроде:
xmlns:bgl="http://schemas.mywhatever.com/apk/res/my.test.package"
... ошибки пройдут, и все запустится, но myId равен нулю а cds равно 0 (значение по умолчанию!) обратно в конструкторе MyComponent.java.
Я бы сказал, что это какая-то очень простая ошибка, но я не смог ее обнаружить, и, поскольку документации по этому вопросу не так много, я решил спросить здесь.
Заранее спасибо!