当前位置: 首页 > 知识库问答 >
问题:

多级用户登录-Android Studio/Firebase

东门秦迟
2023-03-14

所以我尝试为Android Studio创建一个多级用户登录页面,我有一个基本的登录。我向数据库中添加了用户级别,但我的应用程序不断崩溃。我使用Android Studio和Firebase作为后端。

登录。班

private void checkUserType() {

    DatabaseReference databaseReference = firebaseDatabase.getReference().child("Users").child(firebaseAuth.getUid());
    databaseReference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            UserProfile userProfile = dataSnapshot.getValue(UserProfile.class);
            int userType = (userProfile.getUsertype());

            switch (userType) {
                case 0:
                    startActivity(new Intent(Login.this, DoctorActivity.class));
                    break;
                case 1:
                    startActivity(new Intent(Login.this, MainActivity.class));
                    break;
            }
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {}
    });
}

这就是我的数据库的外观:

日志:

进程:com。实例三夏维拉拉马。希望,PID:5524 java。lang.NullPointerException:尝试调用虚拟方法“com”。谷歌。火基。数据库数据库参考com.google.火基。数据库FirebaseDatabase。com上的空对象引用上的getReference()。实例三夏维拉拉马。希望登录。在com上检查usertype(Login.java:124)。实例三夏维拉拉马。希望登录。在com上检查EmailVerification(Login.java:116)。实例三夏维拉拉马。希望登录。在com上访问$300(Login.java:26)。实例三夏维拉拉马。希望登录费4美元。com上的onComplete(Login.java:91)。谷歌。Androidgms。任务。zzj。在android上运行(未知来源:23)。操作系统。处理程序。android上的handleCallback(Handler.java:873)。操作系统。处理程序。android上的dispatchMessage(Handler.java:99)。操作系统。活套。android上的loop(Looper.java:193)。应用程序。活动线程。java上的main(ActivityThread.java:6669)。朗。反思。方法在com上调用(本机方法)。Android内部的操作系统。RuntimeInit$MethodAndArgsCaller。在com上运行(RuntimeInit.java:493)。Android内部的操作系统。合子体。main(ZygoteInit.java:858)

共有1个答案

刘成礼
2023-03-14

您将收到以下错误:

JAVAlang.NullPointerException:尝试调用虚拟方法“com”。谷歌。火基。数据库数据库参考com.google.火基。数据库FirebaseDatabase。对空对象引用执行getReference()

因为您的Firebase Database对象是null,所以您忘记初始化它。为了解决这个问题,请添加以下代码行:

FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance();

就在以下代码行之前:

DatabaseReference databaseReference = firebaseDatabase.getReference().child("Users").child(firebaseAuth.getUid());
 类似资料:
  • 我对Spring Security配置有问题。 当我以用户1身份登录一台计算机,然后我将以用户2身份登录另一台计算机时,刷新后的第一台计算机将所有内容都视为用户2。 换句话说,不可能同时与不同的用户进行两次会话。 配置: Spring Security版本:4.0.1。发布 Spring版本:4.1.6。发布 控制器中的登录请求:

  • 接口说明 用户登录 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 POST /api/user/1.0.0/login 是否需要登录 否 请求字段说明 参数 类型 请求类型 是否必须 说明 username string form 是 用户名 password string form 是 密码 响应字段说明 参数 类型 说明 user St

  • 回顾 在上一章中,我们已经创建了数据库以及学会了使用它来存储用户以及 blog,但是我们并没有把它融入我们的应用程序中。在两章以前,我们已经看到如何创建表单并且留下了一个完全实现的登录表单。 在本章中我们将会建立 web 表单和数据库的联系,并且编写我们的登录系统。在本章结尾的时候,我们这个小型的应用程序将能够注册新用户并且能够登入和登出。 我们接下来讲述的正是我们上一章离开的地方,所以你可能要确

  • 我对Laravel有点陌生,我已经设置了一个表用户,其中包含用户名和密码字段。 我的登录屏幕上有一个表单,其中正式声明了这些字段,我有一个函数是UserController: 我知道这是顺利的,因为如果我空白提交表单,我可以看到错误消息。 我已经删除了默认的用户认证。 当我提交时,我得到: 错误异常在EloquentUserProvider.php第114行:参数1传递给Illumate\Auth

  • Logging in users(用户登陆) loopback User Model 登陆 登陆 登出 第三方登陆系统 密码重置 登陆 调用 User.login() 方法实现 登陆/认证, 需要提供一个带有 password 和 email/username 属性的对象,作为函数的第一个参数, 方法返回一个 access token 代码案例: /** * 登陆方法 * @param {o

  • cmf_get_current_user_id() 功能 获取当前登录前台用户id 参数 无 返回 int用户 ID,0表示用户未登录