Ho due progetti Android, un "progetto di libreria" contenente un layout personalizzato e un "progetto di applicazione" contenente un'applicazione che utilizza il layout.Specifica delle dipendenze del progetto Android (in Eclipse)
Tutto sembra costruire ed eseguire correttamente, tranne che l'editor del layout visivo genera una classe ClassNotFoundException (che presumo sia un bug nel plug-in), ma quando provo a iniziare a utilizzare gli attributi che ho definito per il layout personalizzato in xml, non posso più costruire. Questo è; questo funziona:
<?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>
considerando che il presente non lo fa:
<?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 compilazione fallisce con un messaggio da aapt:
ERRORE Nessun identificatore di risorsa trovata per l'attributo 'layout_horizontalSpacing' a pacchetto ' se.fnord.android '
L'identificatore di risorsa fa ex ist nel file R e attrs.xml conteneva il progetto della libreria, e se inserisco il codice di layout e le risorse direttamente nel progetto dell'applicazione, tutto funziona correttamente. L'attributo layout_horizontalSpacing (e layout_verticalSpacing) è un attributo personalizzato utilizzato nella classe PredicateLayout.LayoutParam per specificare la distanza dal widget successivo.
Finora ho provato i modi eclissi standard specificando i riferimenti di progetto e le dipendenze del percorso del percorso di generazione. Mi è stato anche detto di provare il tag nel manifest dell'applicazione, il che non ha aiutato.
Quindi, cosa devo fare per far funzionare i riferimenti nel file xml?
Non so se è rilevante, ma manifesta la 'biblioteca' si presenta così:
<?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>
L' 'applicazione' manifestare in questo modo:
<?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>
(Il 'PredicateLayout' , btw, è una versione ripulita di this).
Vedere anche 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