Toast:"this"和"getApplicationContext()"的区别?
Toast: Difference between "this" and "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();
我知道了:
两者都是直接从 activity 中调用的。
这是为什么?
它与上下文关联的主题有关。使用 this
是使用与应用程序上下文具有不同主题的上下文(我假设您的 Activity
或 Fragment
)。
如果你有理由需要使用应用程序上下文,你可以将它包装在你的活动使用的任何主题中(通常在你的 AndroidManifest.xml
中设置)并且它应该显示 "round" 吐司.
Toast.makeText(new ContextThemeWrapper(getApplicationContext(), R.style.AppTheme), "This is a toast", Toast.LENGTH_SHORT).show();
我的设备运行 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();
我知道了:
两者都是直接从 activity 中调用的。
这是为什么?
它与上下文关联的主题有关。使用 this
是使用与应用程序上下文具有不同主题的上下文(我假设您的 Activity
或 Fragment
)。
如果你有理由需要使用应用程序上下文,你可以将它包装在你的活动使用的任何主题中(通常在你的 AndroidManifest.xml
中设置)并且它应该显示 "round" 吐司.
Toast.makeText(new ContextThemeWrapper(getApplicationContext(), R.style.AppTheme), "This is a toast", Toast.LENGTH_SHORT).show();