J'ai deux projets Android, un «projet de bibliothèque» contenant une mise en page personnalisée et un «projet d'application» contenant une application qui utilise la mise en page. Tout semble se construire et s'exécuter correctement, sauf que l'éditeur de disposition visuelle lève une ClassNotFoundException (ce que je suppose être un bug dans le plug-in), mais quand j'essaie de commencer à utiliser les attributs que j'ai définis pour la mise en page personnalisée dans le fichier XML, je ne peux plus construire. C'est; cela fonctionne:Spécification des dépendances de projet Android (dans Eclipse)
<?xml version="1.0" encoding="utf-8"?>
<se.fnord.android.layout.PredicateLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="asdfasdf"
/>
</se.fnord.android.layout.PredicateLayout>
Alors que cela ne:
<?xml version="1.0" encoding="utf-8"?>
<se.fnord.android.layout.PredicateLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:fnord="http://schemas.android.com/apk/res/se.fnord.android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
fnord:layout_horizontalSpacing="1px"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="asdfasdf"
/>
</se.fnord.android.layout.PredicateLayout>
La construction échoue avec un message de AAPT:
ERREUR Aucun identifiant de ressource trouvé pour l'attribut 'layout_horizontalSpacing' dans le paquet ' se.fnord.android '
L'identifiant de ressource est ex ist dans le fichier R et attrs.xml contenait le projet de bibliothèque, et si je mets le code de disposition et les ressources directement dans le projet d'application tout fonctionne bien. L'attribut layout_horizontalSpacing (et layout_verticalSpacing) est un attribut personnalisé utilisé dans la classe PredicateLayout.LayoutParam pour spécifier la distance jusqu'au widget suivant. Jusqu'ici j'ai essayé les manières standard d'éclipse en spécifiant des références de projet et des dépendances de projet de chemin de construction. On m'a également dit d'essayer l'étiquette dans le manifeste de l'application, ce qui n'a pas aidé. Alors, que dois-je faire pour que les références dans le fichier xml fonctionnent?
Je ne sais pas si elle est pertinente, mais le manifeste 'bibliothèque' ressemble à ceci:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="se.fnord.android"
android:versionCode="1" android:versionName="1.0.0">
</manifest>
Le manifeste comme cette 'application':
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="se.fnord.appname"
android:versionCode="1" android:versionName="1.0.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".AppName"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
(Le 'PredicateLayout' , btw, est une version nettoyée de this).
Voir aussi http://stackoverflow.com/questions/8581627/android-activity-under-eclipse-adt-with-project-dependencies-failed-resolving-x http://stackoverflow.com/questions/9838069/ jar-file-issue-with-adt-r17 – jfritz42