提问者:小点点

无法获取应用上下文(未解决引用)


我正在尝试获取应用程序的上下文以打印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文件。

谢谢!


共3个答案

匿名用户

根据你的代码

如果这行得通

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