Après une longue recherche, je n'ai pas trouvé de solution appropriée. J'ai un projet Android-Library avec presque tout le code de l'application. Depuis l'activité principale du projet de bibliothèque, je lance un Intent to en explicite Activity A. Dans mon projet dérivé, qui utilise le projet de bibliothèque, j'ai étendu cette Activity A et ajouté du nouveau code. Le problème est que la Superclasse de l'Activité A répondra et non la classe dérivée.
Dans le manifeste du nouveau projet qui utilise le projet de bibliothèque, j'ai déclaré la nouvelle activité avec le nouveau paquet.
Voici l'appel à l'intention du projet de bibliothèque :
Intent i = new Intent(getApplicationContext(), AndroidActivity.class);
startActivity(i);
Voici la classe dérivée AndroidActivity :
public class AndroidActivity extends de.app.library.activities.AndroidActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
Je n'arrive pas à accéder à la méthode onCreate.
Le manifeste du projet de bibliothèque :
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="de.app.library"
android:versionName="1.0"
android:versionCode="1">
<uses-sdk android:minSdkVersion="4" />
<application
android:icon="@drawable/icon"
android:label="@string/app_name">
<activity android:name=".activities.MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".activities.AndroidActivity" android:label="@string/act_android" />
</application>
Et voici le manifeste du nouveau projet :
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="de.app.free"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="4" />
<application
android:icon="@drawable/icon"
android:label="@string/app_name">
<activity android:name="de.app.library.activities.MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".activities.LernenActivity" android:label="@string/act_lernen" />
C'est ce que j'ai fait :
de.app.library.activities.AndroidActivity and
de.app.free.activities.AndroidActivity
Je ne voulais pas faire autant de changements dans le projet de la bibliothèque, car un troisième projet devrait utiliser le code existant avec l'AndroidActivity non modifié.
Toutes les autres choses fonctionnent bien pour moi. Par exemple, les mises en page modifiées sont utilisées dans le nouveau projet.
Comment puis-je gérer ce problème ? Peut-être des changements dans le manifeste du nouveau projet dans lequel je déclare, que la nouvelle activité doit être appelée au lieu de la superclasse ?
Merci d'avance !