Тост: Разница между «этим» и «getApplicationContext ()»?

Мое устройство работает под управлением Android 5.1.1, и я узнал, что если я использую

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

Я получил это:

«Круглый» тост

Но если я использую getApplicationContext() вместо this ,

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

Я получил это:

Прямоугольный тост

Оба вызываются непосредственно из активности.

Почему это?

Это связано с тем, что связанная с ним тема. Используя this , используйте контекст (я принимаю вашу Activity или Fragment ), у которого есть другая тема, чем контекст приложения.

Если у вас есть причина, вам нужно использовать контекст приложения, вы можете обернуть его в зависимости от темы, которую используют ваши действия (как правило, в AndroidManifest.xml ), и она должна показывать «круглый» тост.

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