打开初始片段时获取 KotlinNullPointerException

Posted

技术标签:

【中文标题】打开初始片段时获取 KotlinNullPointerException【英文标题】:Get KotlinNullPointerException when open initial fragment 【发布时间】:2020-02-17 07:49:09 【问题描述】:

在初始化我的uid 时:

fun setInitialData() 
        firebaseUser = FirebaseAuth.getInstance().currentUser
        databaseReference = FirebaseDatabase.getInstance().reference
        uid = firebaseUser!!.uid

但如果我替换 firebaseUser?.uid 上的初始化,数据库数据将不会立即加载。 那么理解这是正确的方法吗? 我也明白在加载数据之前做一些暂停的决定有多额外?

【问题讨论】:

@JeelVankhede 好的,但正如我所说,如果我使用firebaseUser?.uid,我在上传数据时会遇到问题。 你能发布完整的错误吗? 【参考方案1】:

根据官方文档关于 FirebaseUser 的getCurrentUser() 方法:

返回当前登录的 FirebaseUser,如果没有则返回 null

回答你的问题:

那么理解这是正确的方法吗?

不,您需要始终使用getCurrentUser() != null 来检查用户是否已登录。

我也明白在加载数据之前做一些暂停的决定有多额外?

在这种情况下无需暂停。

【讨论】:

【参考方案2】:

无法在创建 Activity 或 Fragment 时初始化 Firebase 身份验证,因为它需要时间才能做出响应。尝试在按钮单击或除 oncreate 之外的任何地方传递它。

【讨论】:

我试图在onViewCreated 中初始化我的firebase。在方法中:setInitialData()。你可以在这里查看完整代码:gist.github.com/mnewlive/56c4a84eb3ef22f930779e49c710fc4a

以上是关于打开初始片段时获取 KotlinNullPointerException的主要内容,如果未能解决你的问题,请参考以下文章

将初始数据提供给片段的正确方法?

在应用关闭时单击 Firebase 通知后打开特定的活动/片段

当通知进入android时如何获取Bundle数据

我想在每次选择底部导航项时初始化片段

我无法在 Home Fragment 中获取 Support Fragment?

java 只有在可见并完成初始化时才会丢弃数据的片段。