首页 > 解决方案 > 有没有办法保存android应用程序的当前用户状态

问题描述

在我的应用程序中,我有两个登录按钮,一个用于教师另一个用于学生,两个登录重定向到添加了 firebase google 登录的活动,我想区分用户从哪个登录登录到应用程序。我需要你的帮助。

尝试1:我使用了一个额外的变量状态,它传递用户并使用意图传递它,并在检查来自意图的数据后加载欢迎屏幕。但在这种情况下,重新启动应用程序后变量为空,因为它直接进入欢迎活动,而不是从登录屏幕。

尝试2:我使用firestore存储变量状态并在重新启动时检索,但它从数据库中检索null,但在Firebase控制台中数据在那里。task.getResult() 产生一个空指针异常。

获取 for 循环条件中 task.getResult() 中发生 NullPointerException 的数据库

FirebaseFirestore db = FirebaseFirestore.getInstance();
    db.collection("UserState")
            .get()
            .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                @Override
                public void onComplete(@NonNull Task<QuerySnapshot> task) {
                    if (task.isSuccessful()) {
                        for (QueryDocumentSnapshot document : task.getResult()) {
                            Log.d("ONSUCCESS", "Query Document Snapshot fetched successfully");
                            if (user != null) {
                                user = document.get("USER").toString();
                            }
                        }
                    } else {
                        Log.w(TAG, "Error getting documents.", task.getException());
                    }
                }
            });

我的 FireStore 数据库结构 FireStore 数据库结构

标签: javaandroidfirebasegoogle-cloud-firestorenullpointerexception

解决方案


推荐阅读