微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我无法从 Android 中的 Firebase 实时数据库中获取字符串

如何解决我无法从 Android 中的 Firebase 实时数据库中获取字符串

我的应用程序有问题。我构建了一个简单的登录/注销应用程序并且它可以正常工作,我想在用户每次登录时吐出一条消息,但它吐出一个空字符串(我将它登录到 logcat 并正常显示),我不知道为什么以及如何修复它。 请帮助我并告诉我是否有更好的方法从 Firebase 获取这些数据。

下面是代码

String username = ""; //TO STORE USERNAME - Global variable
private void loginUser(String txt_email,String txt_password) {
    auth.signInWithEmailAndPassword(txt_email,txt_password)
        .addOnCompleteListener(this,new OnCompleteListener<AuthResult>() {
            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {
                if (task.isSuccessful()) {
                    // Sign in success,update UI with the signed-in user's information
                    Log.d("firebase_debug","signInWithEmail:success");

                    //GET USER NAME
                    FirebaseUser user = auth.getCurrentUser();
                    DatabaseReference username_ref = db.getReference("Users");
                    username_ref.child(user.getUid()).child("username").get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
                        @Override
                        public void onComplete(@NonNull Task<DataSnapshot> task) {
                            if (!task.isSuccessful()) {
                                Log.e("firebase","Error getting data",task.getException());
                            }
                            else {
                                Log.d("firebase",String.valueOf(task.getResult().getValue())); // THIS LINE STILL WORK,IT DO LOG THE CORRECT USERNAME
                                username=String.valueOf(task.getResult().getValue());
                            }
                        }
                    });

                    Toast.makeText(MainActivity.this,username,Toast.LENGTH_SHORT).show();//TOAST EMPTY STRING ??

                    startActivity(new Intent(MainActivity.this,ChatRoom_Activity.class));
                    finish();
                } else {
                    // If sign in fails,display a message to the user.
                    Log.d("firebase_debug","signInWithEmail:failure",task.getException());
                    login_btn.setText("LOGIN");
                    login_btn.setEnabled(true);
                    password_input.setText("");
                }
            }
        }).addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(@NonNull @NotNull Exception e) {
            Toast.makeText(MainActivity.this,e.getMessage(),Toast.LENGTH_SHORT).show();
        }
    });
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?