运行 在应用程序中使用 Toast 函数 Class

Run function with Toast in Application Class

非常感谢大家!我刚开始使用 Kotlin,它可能应该被称为 K 语言(如 C 和 F),并且在这个网站上找到了很多解决方案......太棒了!

我有一个名为 AppTime.kt 的独立 class 文件,它在 AndroidManifest.xml 文件中声明:

    <application
        android:name=".AppTime"

class AppTime : Application() {

    fun burntToast(sMsg: String) {
        Toast.makeText(this.applicationContext, "!", Toast.LENGTH_LONG).show()
    }
}

它不会 运行 从片段的任何地方调用时 class:

class FirstFragment : Fragment() {...

    AppTime().burntToast()

我已经尝试了在 makeText(... 然后从带或不带上下文或字符串参数的片段中调用它。

是我拥有的class类型吗?

class 中定义的函数只能在 class 的实例上调用,正如您已经发现的那样。

但是您不能简单地实例化任意应用程序并期望它能够工作。 Android 在框架 class 可用之前进行了大量 behind-the-scenes 设置。您自己实例化的任何 Application 或 Activity 都是无用的。您必须使用在您的应用程序中启动的活动的整个生命周期中提供给您的实例。

如果您想从 Fragment 中调用此函数,则必须获取应用程序的实例,您可以从其关联的 Activity 中获取该实例。由于 Activity class 不知道您的应用程序的特定子class,您还必须将应用程序转换为您的特定子class 才能调用其唯一职能。您可以使用 requireActivity().

获得 Activity
(requireActivity().application as AppTime).burntToast()