9

Mon appareil fonctionne Android 5.1.1 et je trouve que si j'utiliseToast: Différence entre "this" et "getApplicationContext()"?

Toast.makeText(this, "This is a toast", Toast.LENGTH_SHORT).show(); 

Je suis arrivé ceci:

"round" toast

Mais si j'utilise getApplicationContext() au lieu de this,

Toast.makeText(getApplicationContext(), "This is a toast", Toast.LENGTH_SHORT).show(); 

J'ai reçu ceci:

rectangle toast

Les deux sont appelés directement à partir de l'activité.

Pourquoi est-ce?

Répondre

13

Cela a à voir avec le thème que le contexte lui a associé. L'utilisation de this utilise un contexte (je suppose que votre Activity ou Fragment) qui a un thème différent de celui du contexte d'application. Si vous avez une raison pour laquelle vous devez utiliser le contexte de l'application, vous pouvez l'envelopper dans le thème que vos activités utilisent (généralement défini dans AndroidManifest.xml) et afficher le toast "rond".

Toast.makeText(new ContextThemeWrapper(getApplicationContext(), R.style.AppTheme), "This is a toast", Toast.LENGTH_SHORT).show();