Eclipse の Android プロジェクトでカスタム コンポーネントを呼び出すのに問題があります。名前空間宣言がどのように一緒に属しているかを理解していないようです。ここSOで他のいくつかのスレッドを確認しましたが、最初は関連しているように見えますが、これらの問題を解決できません:
- android-custom-control-namespace-issue
- Java および xml でカスタム コンポーネント パラメータを渡す方法
- android-custom-widget-styles-how-to-put-them-into-a-namespace
次の設定があります(コードは匿名化されています):
/values/extra_attrs.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="extraComponent">
<attr name="count" format="integer" />
</declare-styleable>
</resources>
/layout/extra_main.xml
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<ImageView
android:id="@+id/extra_main"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/extra_main"
/>
</merge>
/com.site.package.extra/extra.java
package com.site.package.extra;
... misc imports...
public class Extra extends FrameLayout
{
... misc code...
}
/com.site.package/main.java (起動クラス)
package com.site.package;
... misc imports...
public class Main extends Activity
{
... misc code...
}
/layout/main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/main_style"
xmlns:extra="http://schemas.android.com/apk/res/com.site.package" >
<com.site.package.Extra
android:layout_width="wrap_content"
android:layout_height="wrap_content"
extra:count="3">
</com.site.package.Extra>
</RelativeLayout>
私が直面している問題は次のとおりです。何をしても、カスタム コンポーネントを呼び出すことができません。5 月のレイアウトでエラーが発生し、次の項目を変更しようとしました。
- 名前空間宣言
xmlns:extra="http://schemas.android.com/apk/res/com.site.package"
xmlns:extra="http://schemas.android.com/apk/res/com.site.package.extra"
xmlns:extra="http://schemas.android.com/apk/res/extra"
- コンポーネントの呼び出し
<com.site.package.extraComponent />
<com.site.package.Extra.extraComponent />
<extraComponent />
<Extra.extraComponent />
<android.view.ext.extraComponent />
- 属性
extra:count="3"
com.site.package.extra:count="3"
どちらの場合も、私はインテリセンスから何の助けも得られないので、完全に道に迷います。ここで名前空間がどのように機能しているか、コードをどのように機能させるべきかを本当に理解していません。
編集 :
AndroidManifest.xmlファイルを含めるのを忘れていました。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.site.package"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="7" />
<application
android:icon="@drawable/ic_logo"
android:label="MyApp"
android:name="MyApp" >
<activity
android:label="MyApp"
android:name=".Main" >
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</manifest>