无法解决此错误。 Kotlin -Firebase

Posted

技术标签:

【中文标题】无法解决此错误。 Kotlin -Firebase【英文标题】:Cannot solve this error. Kotlin -Firebase 【发布时间】:2021-11-24 09:10:51 【问题描述】:

我需要将这些数据发送到回收站视图,因此我创建了一个适配器类和项目类。没有问题。但这是我得到的错误:

java.lang.RuntimeException:无法启动活动 ComponentInfocom.example.busconductor/com.example.busconductor.busCodesActivity:kotlin.UninitializedPropertyAccessException:lateinit 属性引用尚未初始化

error

我做得很好,但无法解决这个问题。

这是代码

class busCodesActivity : AppCompatActivity() 

    private lateinit var reference : FirebaseDatabase1

    private lateinit var codeRecyclerView: RecyclerView
    private lateinit var codeArrayList: ArrayList<CityCodes>

    override fun onCreate(savedInstanceState: Bundle?) 
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_bus_codes)


        codeRecyclerView = findViewById(R.id.recyclerView)
        codeRecyclerView.layoutManager = LinearLayoutManager(this)
        codeRecyclerView.setHasFixedSize(true)
        codeArrayList = arrayListOf<CityCodes>()
        getCodeDetails()

        val Button = findViewById<Button>(R.id.button5)
        Button.setOnClickListener 
            startActivity(Intent(this@busCodesActivity, conductorMenu::class.java))
    

    private fun getCodeDetails() 
        val ref = reference.getReference("CityCodes")

        ref.addValueEventListener(object : ValueEventListener 
            override fun onDataChange(snapshot: DataSnapshot) 
                if (snapshot.exists())
                    for (routeSnapshot in snapshot.children)
                        val code = routeSnapshot.getValue(CityCodes::class.java)
                        codeArrayList.add(code!!)
                    
                    codeRecyclerView.adapter = CityAdapter(codeArrayList)
                
            

            override fun onCancelled(error: DatabaseError) 
                TODO("Not yet implemented")
            


        )
    

请帮助我。我是 kotlin 的新手。

【问题讨论】:

【参考方案1】:

正如错误消息所说,您永远不会初始化您在此处声明的 reference

private lateinit var reference : FirebaseDatabase1

FirebaseDatabase1 中的 1 出乎意料,但我假设您知道它的来源。如果不是,您可能希望它是 FirebaseDatabase 而没有 1

我的猜测是你想在onCreate 中初始化它以指向数据库:

reference = Firebase.database

【讨论】:

我做到了。但我再次收到此错误java.lang.RuntimeException: Unable to instantiate activity ComponentInfocom.example.busconductor/com.example.busconductor.busCodesActivity: java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process com.example.busconductor. Make sure to call FirebaseApp.initializeApp(Context) first 实际上,在我的项目中有两个应用程序模块,这是第二个应用程序模块。第一个效果很好。【参考方案2】:

我发现了错误。实际上它不在代码中。在我的项目中,我有两个应用程序模块。所以我必须在 Firebase 中添加这两个应用程序。所以这就是问题所在。否则我的代码是正确的。

在尝试使用 Firebase 之前,请确保将所有应用模块连接到 Firebase。

【讨论】:

以上是关于无法解决此错误。 Kotlin -Firebase的主要内容,如果未能解决你的问题,请参考以下文章

错误记录Kotlin 报错 ( Some kotlin libraries attached to this project were compiled with a newer kotlin )

错误记录Kotlin 报错 ( Some kotlin libraries attached to this project were compiled with a newer kotlin )

kotlin + Dagger2 :没有@Provides-annotated 方法就无法提供

Android Kotlin 中的 ROOM 数据库出错

Kotlin 多平台移动 - 无法运行 iOS 项目 - 缺少此目标所需的一个或多个架构

在 Kotlin 中无法“findViewById”。收到错误“类型推断失败”