多级用户登录 - Android Studio / Firebase

Posted

技术标签:

【中文标题】多级用户登录 - Android Studio / Firebase【英文标题】:Multi level user login - Android Studio / Firebase 【发布时间】:2019-03-13 16:37:27 【问题描述】:

所以我正在尝试为 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) 
    );

这是我的数据库的样子:

Logcat:

进程:com.example.trixiavillarama.hope,PID:5524 java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“com.google.firebase.database.DatabaseReference com.google.firebase.database.FirebaseDatabase.getReference()” 在 com.example.trixiavillarama.hope.Login.checkUserType(Login.java:124) 在 com.example.trixiavillarama.hope.Login.checkEmailVerification(Login.java:116) 在 com.example.trixiavillarama.hope.Login.access $300(Login.java:26) 在 com.example.trixiavillarama.hope.Login$4.onComplete(Login.java:91) 在 com.google.android.gms.tasks.zzj.run(未知来源:23) 在 android.os.Handler.handleCallback(Handler.java:873) 在 android.os.Handler.dispatchMessage(Handler.java:99) 在 android.os.Looper.loop(Looper.java:193) 在 android.app.ActivityThread.main(ActivityThread.java:6669) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

【问题讨论】:

您能否发布关于您如何存储这些不同用户的数据库结构? 我更新了帖子。 @GastónSaillén 如果您的应用程序崩溃,logcat 输出中应该有错误消息和堆栈跟踪。您可以查找这些内容并将其添加到您的问题中吗? 帖子已更新。谢谢 您好,您似乎已经开始使用 SO,并且您在编辑问题以帮助我们帮助您方面做得很好。我只是建议您查看this *** article 并选择tour 【参考方案1】:

您收到以下错误:

java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“com.google.firebase.database.DatabaseReference com.google.firebase.database.FirebaseDatabase.getReference()”

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

FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance();

就在以下代码行之前:

DatabaseReference databaseReference = firebaseDatabase.getReference().child("Users").child(firebaseAuth.getUid());

【讨论】:

应用程序现在不会崩溃,但如果我使用管理员帐户,它不会重定向到其他页面,反之亦然 这听起来基本上是另一个问题。为了遵守本社区的规则,请再发一个新问题,以便我和其他用户可以帮助您。

以上是关于多级用户登录 - Android Studio / Firebase的主要内容,如果未能解决你的问题,请参考以下文章

如何使用Android Studio开发用户登录界面

如何使用android studio开发用户登录界面

如何使用Android Studio开发用户登录界面

如何使用Android Studio开发用户登录界面

在 android studio 中使用 SQLite 显示上次登录的用户数据

用户登录但未登录时的Android Studio按钮onclick重定向条件