Android 吐司:区别于;这";及;getApplicationContext();?

Android 吐司:区别于;这";及;getApplicationContext();?,android,android-context,android-toast,android-5.1.1-lollipop,Android,Android Context,Android Toast,Android 5.1.1 Lollipop,我的设备运行安卓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(); 我明白了: 这两个函数都是直接从活动中调用的 这

我的设备运行安卓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();
我明白了:

这两个函数都是直接从活动中调用的


这是为什么?

它与上下文关联的主题有关。使用
使用的上下文(我假设您的
活动
片段
)的主题与应用程序上下文不同

如果您有理由需要使用应用程序上下文,那么可以将其包装在您的活动正在使用的任何主题中(通常在
AndroidManifest.xml
中设置),并且它应该显示“圆形”吐司

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