为什么我得到NULL结果Fom Firebase

问题描述 投票:0回答:1

我创建了一个新的用户注册屏幕,并且在用户登录后进入登录屏幕

注册用户时,我希望应用程序验证用户是否存在于数据库中(如果该用户存在)。将用户移至主页之前的应用程序可以为该用户打印一些值,例如电子邮件,帐户类型,用户名和帐户状态。是真的还是假的?

但是当我在ANDROID STUDIO CONSOLE上获得(NULL)时

我的登录屏幕

public class LoginScreen extends AppCompatActivity {
    private FirebaseAuth mAuth;

    FirebaseDatabase database = FirebaseDatabase.getInstance();
    final DatabaseReference myRef = database.getReference("users");
    final FirebaseAuth firebaseAuth = FirebaseAuth.getInstance();


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login_screen);
        final ProgressBar simpleProgressBar = (ProgressBar) findViewById(R.id.loginProgressBar);
        simpleProgressBar.setVisibility(View.INVISIBLE);

         mAuth = FirebaseAuth.getInstance();

    /*    mauthlistener = new FirebaseAuth.AuthStateListener() {
            @Override
            public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
                if (firebaseAuth.getCurrentUser() != null){


                }
            }
        }*/
        final String TAG = "MyActivity";

        final Button gotosignupbtn = findViewById(R.id.gosignup);
        gotosignupbtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent gotosignup = new Intent(LoginScreen.this, SignupScreen.class);
                startActivity(gotosignup);
                finish();
            }
        });


        final EditText email = findViewById(R.id.emaillogin);
        final EditText password = findViewById(R.id.passwordlogin);

        Button loginbt = findViewById(R.id.loginbtn);

        loginbt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                simpleProgressBar.setVisibility(View.VISIBLE);
                final String Email = email.getText().toString();
                final String Password = password.getText().toString();

                mAuth.signInWithEmailAndPassword(Email , Password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {
                      //  FirebaseUser  userr = FirebaseAuth.getInstance().getCurrentUser();
                        FirebaseUser user = firebaseAuth.getCurrentUser();
                        final String  userKey = user.getUid();
                       if (task.isSuccessful()){
                           simpleProgressBar.setVisibility(View.INVISIBLE);

                           myRef.child("users").child(userKey).addValueEventListener(new ValueEventListener() {
                               @Override
                               public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                                   String userKey = dataSnapshot.child("\n" + "Email").getValue(String.class);
                                   Log.d(TAG, "Name: " + userKey);


/*
                                   userdtails activestatus = dataSnapshot.getValue(userdtails.class);
                                   System.out.println(activestatus);*/

                               }

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

                               }
                           });
                           Toast.makeText(LoginScreen.this, "Authentication ok.",
                                   Toast.LENGTH_SHORT).show();
                           FirebaseAuth.getInstance().signOut();


                       }else{
                           simpleProgressBar.setVisibility(View.INVISIBLE);
                           Toast.makeText(LoginScreen.this, "Error.",
                                   Toast.LENGTH_SHORT).show();

                       }
                    }
                });
            }
        });


    }

}

This is screen od firebase child have make

java android firebase firebase-realtime-database firebase-authentication
1个回答
0
投票

如果您要提取数据,请执行以下操作:

......
myRef.child("users").child(userKey).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

//get the data of the user
String accountType = dataSnapshot.child("AcountType").getValue(String.class);
String companyName = dataSnapshot.child("CompanyName").getValue(String.class);
String Email = dataSnapshot.child("Email").getValue(String.class);
String phone = dataSnapshot.child("Phone").getValue(String.class);
String username = dataSnapshot.child("Username").getValue(String.class);
String activestatus = dataSnapshot.child("activestatus").getValue(String.class);
String email = dataSnapshot.child("email").getValue(String.class);
......
......
......
© www.soinside.com 2019 - 2024. All rights reserved.