Android Firebase值从实时数据库返回空值

qxsslcnc  于 2022-12-14  发布在  Android
关注(0)|答案(1)|浏览(167)

我目前正在尝试制作一个用户需要登录的android应用程序。对于数据库,我使用Firebase的实时数据库。我制作了注册和密码重置的东西,但我坚持让用户登录。我有一个数据库,看起来像这样:this
问题是密码返回空值,所以当我尝试比较它时,它只是破坏了应用程序。
我目前的代码是:

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) {
            }
        });

    }
});

我已经试过所有我能从互联网上,但似乎没有任何效果。我的实时数据库规则设置为真的读和写。任何帮助我可以得到我真的很感激。

jtoj6r0c

jtoj6r0c1#

问题是

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

行。我将dataSnapshot更改为userSnapshot,它工作正常。

相关问题