He estado trabajando en un control personalizado para Android y, aunque intenté hacer lo que se sugiere here, parece haber algo que estoy haciendo mal.Problema de espacio de nombres de Android Custom Control
Aquí está mi código para ver si alguien puede detectar el problema:
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
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="MyComponent">
<attr name="cd_number" format="integer" />
<attr name="identifier" format="string" />
</declare-styleable>
</resources>
main.xml
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:bgl="http://schemas.android.com/apk/res/my.test.package.components"
android:id="@+id/table"
android:layout_width="match_parent"
android:layout_height="match_parent">
...
<my.test.package.MyComponent
android:id="@+id/hand"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_span="2"
bgl:cd_number="4"
bgl:identifier="plr"/>
...
</TableLayout>
Cuando puse esto lo obtienen los siguientes errores:
de error: No se encontró identificador de recursos para el atributo 'cd_number' en el paquete 'my.test.package' de error: No encontré identificador de recursos para el atributo 'identificador' en paquete 'my.test.package'
Si cambio de espacio de nombres a algo como:
xmlns:bgl="http://schemas.mywhatever.com/apk/res/my.test.package"
... los errores van w ay y la cosa se ejecuta pero myId es nulo y cds es 0 (¡el valor predeterminado!) en el constructor MyComponent.java.
Yo diría que es un error muy básico pero no ser capaz de detectarlo y como no hay mucha documentación al respecto, decidí preguntar aquí.
¡Gracias de antemano!
Excelente trabajo investigando y proporcionando la respuesta. la reparación res-auto es exactamente lo que necesitaba. – AlanKley
'res-auto'. ¡Tú, bonita! – darksider474
¿Qué es bgl y myns? ¿Cómo podría establecer ese nombre? – Nepster