android - 在 Jetpack Compose 不可组合函数中获取上下文

标签 android firebase kotlin firebase-realtime-database android-jetpack-compose

我想将一些数据插入 Firebase。为此,我有一个不可组合的函数,在该函数中,我想调用 Toast.makeText 。 .在 .addOnSuccessListener 部分。 但是,我无法获得应该在 Toast.makeText 语句中的上下文

fun saveActivityToFB(
    answer: String,
    question: String,
    id: String
) {

    var db: DatabaseReference = Firebase.database.reference
    val ques = Question(answer, question)

    db.child("activity").child("test").child(id).setValue(ques)
        .addOnSuccessListener {
            Log.d("FB", "OK")

           //problems with context here!!
            Toast.makeText(context, "Successfully Added to FB", Toast.LENGTH_SHORT).show()

        }
        .addOnFailureListener {
            Log.d("FB", "Not inserted into FB")
        }
} 

我知道为了从可组合函数中显示 Toast,我应该获取上下文:

val context = LocalContext.current

但不知道如何在这种情况下获取上下文。

最佳答案

如果您要从可组合函数调用该函数,请使其可组合并通过 LocalContext.current 访问它。如果您从 ViewModel 调用它,则可以将其设为 AndroidViewModel 并改用 ApplicationContext。否则您不应该访问上下文。想想它的名字——“上下文”——形成应用程序状态的环境。遵循这个波长,就很容易理解您应该在哪里访问上下文:您不能随便从哪里得到它,您需要从与 UI 相关的地方检索它。因此,尝试执行上述方法之一。如果不合适,请提供有关调用该函数的位置的更多信息。

关于android - 在 Jetpack Compose 不可组合函数中获取上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70324983/

相关文章:

android - 我无法查看 Firebase Crashlytics for android 的崩溃详细信息并卡在 "Build and run your app"

android - BuildConfig.DEBUG 是编译时常量吗?

java - 如何从Eclipse运行Javac

ios - 我在新的xcode更新中有简单的Firebase代码错误

android - 是否可以在 Tomcat 服务器中安装 XMPP 模块?

javascript - GoogleAuthProvider 在 Web 应用程序中给出错误 "this.ta is not a function"

android - 来自 navArgs 的数据(Bundle)在系统杀死和重新创建 Activity(和 Fragment)后是否仍然存在?

Java NIO FileChannel - 从 Android TUN 网络接口(interface)读取空值

java - 执行 facebook Graph API 请求时出现 android.os.NetworkOnMainThreadException

java - 安卓+Appium : Scroll inside ListView to specific position and click on it