web-dev-qa-db-fra.com

application Android.app.Application personnalisée ne déclenche pas l'événement OnCreate

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();
29
Narcís Calvet

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é.

76
Balaji Khadake

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>
4
Barakuda

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]

1
keyboardsurfer

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

1
pawelzieba

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.

0
Naveen Kumar