Toast: ¿Diferencia entre "this" y "getApplicationContext ()"?

Mi dispositivo ejecuta Android 5.1.1 y descubrí que si utilizo

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

Tengo esto:

Tostada redonda

Pero si utilizo getApplicationContext() lugar de this ,

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

Tengo esto:

Tostada rectángulo

Ambos se llaman directamente de la actividad.

¿Por qué es esto?

Tiene que ver con el tema que el contexto se ha asociado con él. Usar this es usar un contexto (estoy asumiendo su Activity o Fragment ) que tiene un tema diferente que el Contexto de la Aplicación.

Si tienes una razón por la que necesitas estar usando el contexto de la aplicación, puedes envolverla en cualquier tema que usen tus actividades (normalmente configurado en AndroidManifest.xml ) y mostrar el tostado "redondo".

 Toast.makeText(new ContextThemeWrapper(getApplicationContext(), R.style.AppTheme), "This is a toast", Toast.LENGTH_SHORT).show(); 
  • "Tostar" un mensaje a través de TimerTask
  • ¿Por qué ContextThemeWrapper está ahora restringido al grupo Support Library?
  • GetApplication () vs. getApplicationContext ()
  • Toast.makeText (...) .show () es a veces mal alineado
  • ¿Cómo obtener AssetManager sin referencia al contexto?
  • GetString fuera de un contexto o actividad
  • Creación eficiente de LayoutInflater
  • ¿Qué es "tools: context" en los archivos de diseño de Android?
  • ¿Cómo mostrar AlertDialog en un fragmento?
  • ¿Es seguro usar esta forma de pasar el contexto a clases sin contexto
  • ¿Cómo llamar al método de otra clase sin pasar el contexto?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.