Boîte de dialogue lancer "Impossible d'ajouter de la fenêtre — jeton de la valeur null n'est pas une application” avec getApplication() dans le contexte de la

Mon Activité est d'essayer de créer un AlertDialog qui nécessite un Contexte en tant que paramètre. Cela fonctionne comme prévu si j'utilise:

AlertDialog.Builder builder = new AlertDialog.Builder(this);

Cependant, je suis réticent à l'idée de l'utilisation de "ce" en tant que contexte, en raison du risque de fuites de mémoire lorsque l'Activité est détruit et recréé même au cours de quelque chose de simple comme une rotation de l'écran. À partir d'un related post sur l'Android developer blog:

Il y a deux façons simples pour éviter de contexte liés à des fuites de mémoire. Le plus évident est d'éviter d'échapper au contexte, à l'extérieur de son propre champ. L'exemple ci-dessus a montré le cas de référence statique mais intérieur des classes et de leur référence implicite à l'extérieur de la classe peuvent être tout aussi dangereux. La deuxième solution est d'utiliser le contexte de l'Application. Ce contexte va vivre aussi longtemps que votre application est en vie et ne dépend pas de la activités du cycle de vie. Si vous avez l'intention de les garder à long terme des objets qui ont besoin d'un contexte, rappelez-vous l'objet application. Vous pouvez l'obtenir facilement en appelant le Contexte.getcontexteapplication() ou de l'Activité.getApplication().

Mais pour le AlertDialog() ni getApplicationContext() ou getApplication() est acceptable en tant que Contexte, qu'il lève l'exception:

"Impossible d'ajouter la fenêtre du jeton de la valeur null n'est pas pour une application”

par les références: Un, Deux, Trois, etc.

Alors, faut-il vraiment être considéré comme un "bug", puisque nous sommes officiellement conseillé d'utiliser Activity.getApplication() et pourtant, il ne fonctionne pas comme annoncé?

Jim

InformationsquelleAutor gymshoe | 2011-04-26