0

Eclipse の Android プロジェクトでカスタム コンポーネントを呼び出すのに問題があります。名前空間宣言がどのように一緒に属しているかを理解していないようです。ここSOで他のいくつかのスレッドを確認しましたが、最初は関連しているように見えますが、これらの問題を解決できません:

次の設定があります(コードは匿名化されています):

/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 月のレイアウトでエラーが発生し、次の項目を変更しようとしました。

  1. 名前空間宣言
    • 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"
  2. コンポーネントの呼び出し
    • <com.site.package.extraComponent />
    • <com.site.package.Extra.extraComponent />
    • <extraComponent />
    • <Extra.extraComponent />
    • <android.view.ext.extraComponent />
  3. 属性
    • 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>
4

1 に答える 1

1

カスタムコンポーネントはcom.site.package.extra(投稿したコードから)パッケージに配置されているため、次のようにxmlレイアウトで使用できます。

<com.site.package.extra.Extra // ... other attributes

または:

<view  class="com.site.package.extra.Extra"
     // ... other attributes />

カスタム属性の名前空間:

xmlns:extra="http://schemas.android.com/apk/res/com.site.package"

そしてそれらを使用するには:

extra:count="3"
于 2012-08-10T11:58:50.517 に答える