You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin中如何在Fragment的onStart()方法内调用onReceiptsAdd()函数

实现方案

onReceiptsAdd()方法需要传入两个参数:dataReceipts类型的收据实体、Int类型的位置下标,你只需要在onStart()里先组装好这两个参数,再直接调用方法即可,修改后的代码示例如下:

override fun onStart() {
    super.onStart()

    val value = binding.etBlank.text?.trim().toString()
    val from = binding.etBlank.text?.trim().toString()
    val image = binding.etBlank.text?.trim().toString()
    val rootRef = FirebaseFirestore.getInstance()
    val usersRef = rootRef.collection("receipts")
    val auth = FirebaseAuth.getInstance()
    auth.currentUser?.apply {
        // 1. 组装dataReceipts实体,字段名根据你实际的dataReceipts定义调整即可
        val receipts = dataReceipts(
            id = uid,
            from = from,
            value = value,
            image = image
        )
        // 2. 确定position:如果是追加到列表末尾直接传adapter.itemCount,固定位置就传对应数值
        val addPosition = adapter.itemCount
        // 3. 直接调用onReceiptsAdd方法
        onReceiptsAdd(receipts, addPosition)
        
        // 原有Firestore写入逻辑保留
        usersRef.document(uid).set(mapOf(
            "id" to uid,
            "from" to from,
            "value" to value,
            "image" to image,
        )).addOnCompleteListener { task ->
            if (task.isSuccessful) {
                Log.d("TAG", "User successfully added.")
            } else {
                Log.d("TAG", task.exception?.message ?: "未知异常")
            }
        }
    }
}

注意事项

  • 你当前代码里value/from/image三个字段都是从同一个输入框etBlank取值,属于测试阶段的临时写法,实际使用时替换为对应输入框的取值即可
  • 原有代码里task.exception!!.message!!的强转有崩溃风险,建议替换为安全调用写法,避免空指针异常
  • 如果当前用户未登录(auth.currentUser为null),以上逻辑都不会执行,如有需要可以补充未登录的提示逻辑

内容的提问来源于stack exchange,提问作者MaksChojniak1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 13:24:04