Je dérive une application personnalisée à partir d'Android.app.Application et je ne parviens pas à déclencher son événement onCreate. Voici la mise en œuvre
import Android.app.Application;
public class MyApplication extends Application {
public MyApplication() {
super();
}
@Override
public void onCreate() {
super.onCreate();
}
}
Et voici comment je l'utilise:
MyApplication ctrl = new MyApplication();
Ajouter un suivi dans votre AndroidManifest.xml
<application
Android:name="MyApplication"
Android:debuggable="true"
Android:icon="@drawable/icon"
Android:label="@string/app_name">
</application>
alors votre onCreate()
sera renvoyé.
Très simple
Dans votre AndroidManifest.xml
, dans la balise application
, entrez le nom de votre sous-classe Application
avec son chemin sous l'attribut Android:name
.
Exemple:
<application
...
Android:name=".models.custom.BaseApplication"
...
> ... </application>
Vous ne créez pas réellement d'instances de vos activités avec l'opérateur new
. Au lieu de cela, vous commencez une intention comme ceci:
Intent start = new Intent(context, Classname.class);
context.startActivity(start);
Lors de la création d'un objet avec l'opérateur new
, alors onCreate
ne sera jamais appelé.
[EDIT] Lors de la création d'applications avec l'opérateur new
, onCreate
ne s'appellera pas non plus [/ EDIT]
[EDIT2] Vous pouvez créer une méthode statique qui renvoie l'application comme ceci:
public static MyApplication getApp() {
return mInstance;
}
[/ EDIT2]
Ne le construisez pas, obtenez-le à partir de Context
.
Par exemple, de Activity
:
MyApplication ctrl = (MyApplication)getApplicationContext();
Plus d'infos: Context.getApplicationContext ()
La documentation indique que onCreate()
est
Appelé au démarrage de l'application, avant la création de tout autre objet d'application
Comme Balaji l’a mentionné si votre problème persiste même après avoir mentionné le nom de la classe sous le tag application
<application
Android:name="MyApplication"
Android:debuggable="true"
Android:icon="@drawable/icon"
Android:label="@string/app_name"> </application>
Alors essayez ceci:
Essayez de désactiver Instant Run puis nettoyez le projet et reconstruisez-le, puis exécutez-le à nouveau. Cela a fonctionné pour moi. Merci.