【问题标题】:Get Context in a Jetpack Compose Noncomposable function在 Jetpack Compose Noncomposable 函数中获取上下文
【发布时间】:2022-01-16 08:30:21
【问题描述】:

我想在 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

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

【问题讨论】:

  • 如果你想显示来自saveActivityToFB本身的toast,你可以在这个函数中传递Context作为另一个参数。
  • 请您这么好心,并在代码中显示您的建议。 .谢谢
  • 是的,我按照你的建议得到了。我在理解 Context 方面遇到了很多问题。 . .谢谢

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2020-03-03
    • 1970-01-01
    • 1970-01-01
    • 2022-11-02
    • 1970-01-01
    • 1970-01-01
    • 2022-10-15
    • 2020-05-01
    • 1970-01-01
    相关资源
    最近更新 更多