Y a-t-il un moyen d’obtenir l’instance du contexte actuel en utilisant une méthode statique ?
Je cherche de cette façon parce que je déteste enregistrer l’instance de contexte chaque fois qu’il modifie.
Y a-t-il un moyen d’obtenir l’instance du contexte actuel en utilisant une méthode statique ?
Je cherche de cette façon parce que je déteste enregistrer l’instance de contexte chaque fois qu’il modifie.
Non, je ne pense pas qu’il y a. Malheureusement, vous êtes coincé à l’appel de
ou un des autres sous-classes de la `` . En outre, cette question est un peu liée.
Voici un sans-papiers d'obtenir une Application (qui est un Contexte) à partir de n'importe où dans le thread de l'INTERFACE utilisateur. Il s'appuie sur l'cachés méthode statique ActivityThread.currentApplication()
. Il doit travailler au moins sur Android 4.x.
try {
final Class<?> activityThreadClass =
Class.forName("android.app.ActivityThread");
final Method method = activityThreadClass.getMethod("currentApplication");
return (Application) method.invoke(null, (Object[]) null);
} catch (final ClassNotFoundException e) {
// handle exception
} catch (final NoSuchMethodException e) {
// handle exception
} catch (final IllegalArgumentException e) {
// handle exception
} catch (final IllegalAccessException e) {
// handle exception
} catch (final InvocationTargetException e) {
// handle exception
}
Notez qu'il est possible pour que cette méthode renvoie null, par exemple, lorsque vous appelez la méthode en dehors de la thread de l'INTERFACE utilisateur, ou de l'application n'est pas lié à la discussion.
Il est toujours préférable d'utiliser @RohitGhatol's solution si vous pouvez modifier le code de l'Application.
Si vous êtes ouvert à l’utilisation de RoboGuice, vous pouvez avoir le contexte injecté dans n’importe quelle classe que vous voulez. Voici un petit échantillon de la façon de le faire avec RoboGuice 2.0 (beta 4 au moment d’écrire ces lignes)
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.