【问题标题】:Android Firebase a value is returning null from Realtime DatabaseAndroid Firebase 一个值从实时数据库返回 null
【发布时间】:2022-12-14 00:15:27
【问题描述】:

我目前正在尝试制作一个用户需要登录的安卓应用程序。对于数据库,我使用的是 Firebase 的实时数据库。我做了注册和密码重置的事情,但我坚持让用户登录。我有一个看起来像这样的数据库:this

问题是密码返回 null 所以当我尝试比较它时,它只会破坏应用程序。

我当前的代码是:

loginButton = findViewById(R.id.loginButton);
loginButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        final String username2 = username.getText().toString();
        final String password2 = password.getText().toString();
        final DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference().child("User");
        mDatabase.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                for (DataSnapshot userSnapshot: dataSnapshot.getChildren()) {
                    String username1 = userSnapshot.child("username").getValue(String.class);
                    String password1 = dataSnapshot.child("password").getValue(String.class);
                    if(username1 == null)
                    {
                        Toast.makeText(loginPage.this, "username1 NULL", Toast.LENGTH_SHORT).show();
                        return;
                    }
                    if(password1 == null)
                    {
                        Toast.makeText(loginPage.this, "password1 NULL", Toast.LENGTH_SHORT).show();
                        return;
                    }
                    if(username1.equals(username2) & password1.equals(password2)) {
                        Intent intent = new Intent(loginPage.this, oyunSec.class);
                        startActivity(intent);
                    } else {
                        Toast.makeText(loginPage.this, "Incorrect username or password", Toast.LENGTH_SHORT).show();
                    }
                }
            }
            @Override
            public void onCancelled(@NonNull DatabaseError error) {
            }
        });

    }
});

我已经尝试了所有我可以从互联网上获得的东西,但似乎没有任何效果。我的实时数据库规则设置为 true 以读取和写入。我能得到的任何帮助我都非常感激。

【问题讨论】:

  • 数据库位置:美国 (us-central1)
  • 我不知道 FRD,但是从 userSnapshot 获取用户名和从 dataSnapshot 获取密码听起来很奇怪
  • 首先,停止忽略错误。请至少添加Log.d(TAG, error.getMessage());。你在 logcat 中打印出一些东西了吗?
  • 除此之外,这段代码中到底有什么地方不符合您的预期?
  • 我是 android 的新手(2 天前才开始),所以我真的不知道处理错误的最佳方法。现在它按我想要的方式工作。谢谢您的帮助。

标签: java android firebase firebase-realtime-database


【解决方案1】:

问题是

String password1 = dataSnapshot.child("password").getValue(String.class);

线。我将 dataSnapshot 更改为 userSnapshot,它起作用了。

【讨论】:

    猜你喜欢
    • 2019-05-15
    • 2019-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-20
    • 2019-03-26
    • 1970-01-01
    相关资源
    最近更新 更多