10

我的设备运行 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();

我懂了:

长方形吐司

两者都直接从活动中调用。

为什么是这样?

4

1 回答 1

13

它与上下文关联的主题有关。使用是使用与应用程序上下文具有不同主题this的上下文(我假设您的Activityor )。Fragment

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

Toast.makeText(new ContextThemeWrapper(getApplicationContext(), R.style.AppTheme), "This is a toast", Toast.LENGTH_SHORT).show();
于 2015-10-09T19:11:57.190 回答