2010-07-19 4 views
37

Je suis en train de créer définir une classe d'application personnalisée comme suit:Android: java.lang.IllegalAccessException lorsque vous essayez d'utiliser une commande « Application » classe

  1. créer une sous-classe vide de application appelée MyApp
  2. dans le manifeste, spécifiez Android :: nom pour mon application: <application android:name=".MyApp" ...

Cependant, lorsque je tente de lancer mon application, je reçois: java.lang.RuntimeException: Unable to instantiate application com.test.MyApp java.lang.IllegalAccessException: access to class not allowed

Répondre

100

Assurez-vous que votre classe personnalisée est public, possède un constructeur public à zéro argument, et que le constructeur s'enchaîne au constructeur de la superclasse.

+2

Je suis tombé sur une exception similaire où j'essayais de démarrer un service. Il s'est avéré que la classe de service était accidentellement privée et donc votre solution m'a aidé à trouver le problème, merci! – JonnyBoy

2

Je suis d'accord avec CommonsWare. Si vous étendez android.app.Application pour définir une application personnalisée pour votre projet, assurez-vous d'avoir marqué votre classe en tant que constructeur public et non-agrs public.

Toutefois, sur android.app.Application API il est mentionné que, Il n'est normalement pas nécessaire de sous-classe Application. Dans la plupart des cas, les singletons statiques peuvent fournir la même fonctionnalité de manière plus modulaire.

Espérons que cela aidera.

Cheers.

Questions connexes