私はアンドロイドのカスタムコントロールに取り組んでいますが、私は何を示そうとしましたが、hereは間違っているようです。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
<?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>
私はこれを置くとき、私は次のエラーを取得:
エラー:パッケージ「my.test.package」 エラーの属性「cd_number」が見つかりませんリソース識別子:属性が見つかりませんリソース識別子をパッケージの「識別子」「my.test.package」
私のようなものに自分の名前空間を変更する場合:
xmlns:bgl="http://schemas.mywhatever.com/apk/res/my.test.package"
...エラーがワットに行きますayとその事が実行されますが、myIdはnullで、cdsはMyComponent.javaコンストラクタに戻って0(デフォルト値!)です。
私はそれはいくつかの非常に基本的な間違いだと思いますが、私はそれを見つけることができないし、これに関する多くのドキュメンテーションがないので、ここで尋ねることにしました。
ありがとうございます!
偉大な仕事を研究し、答えを提供します。 res-auto fixはまさに私が必要としていたものです。 – AlanKley
'res-auto'あなたは美人です! – darksider474
bglとmynsとは何ですか、どうすればその名前を設定できますか – Nepster