我正在尝试获取应用程序的上下文以打印Toast消息。我在Java中使用的功能如下:
Toast.makeText(getApplicationContext(), "Hey! I'm working", Toast.LENGTH_LONG).show();
但是现在,我需要用静态编程语言实现它,(我开始学习的语言)感觉有点失落。我已经尝试了以下代码(在这篇文章中给出),但它不起作用,因为我无法获取应用程序的上下文。
Toast.makeText(this@CoreMainActivity, "Its toast!", Toast.LENGTH_LONG).show()
此外,我无法使用getApplicationContext()
获取上下文,如留档中所述。
我很想知道如何调用getApplicationContext()
,并了解this@CoreMainActivity
到底做了什么(在this@CoreMainActivity
之后)。注意coreMainActivity
是一个Java文件。
谢谢!
根据你的代码
如果这行得通
Toast.makeText(getApplicationContext(), "Hey! I'm working", Toast.LENGTH_LONG).show();
那也应该管用
Toast.makeText(applicationContext, "Its toast!", Toast.LENGTH_LONG).show()
更新:根据您的实现使用active
而不是您作为参数获取的application ationContext
以下之一应该有效:
getContext()
getActivity()
this
CoreMainActivity.this
这应该适合您:
fun Context.toast(message: CharSequence) =
Toast.makeText(this, message, Toast.LENGTH_SHORT).show()
您可以将其放置在项目中的任何位置,具体位置由您决定。例如,您可以定义一个文件mypack. util.ContextExtensions.kt
并将其作为顶级函数放在那里
每当您有权访问Context实例时,您都可以导入此函数并使用它:
fun myFun(context: Context) {
context.toast("Hello world!")
}
从这个链接:https://stackoverflow.com/a/36826336/6430917