9

Мое устройство работает Android 5.1.1, и я обнаружил, что если я используюТост: Разница между «этим» и «getApplicationContext()»?

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

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

"round" toast

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

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

Я получил:

rectangle toast

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

Почему это?

ответ

13

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

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

Toast.makeText(new ContextThemeWrapper(getApplicationContext(), R.style.AppTheme), "This is a toast", Toast.LENGTH_SHORT).show(); 
Смежные вопросы