'FirebaseAuth Returning Null for current user even when user logged in

I have a sign in page and after successfully sign in it's redirect into another activity. But whenever I try to get current user in an activity by authStateListener it's returning current user null. I don't know how I got signOut automatically? In this period my current User should be not null. How can I solve this issue?

Here is my SignIn.java

public class SignIn extends AppCompatActivity {

    Button signIn,forgetPass;
    TextView backToSignUp,number,password;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sign_in);

        signIn=findViewById(R.id.signInButtonId);
        forgetPass=findViewById(R.id.forgetPassButtonId);
        backToSignUp=findViewById(R.id.signUpBack);
        number=findViewById(R.id.signInNumberId);
        password=findViewById(R.id.signInPasswordId);


        signIn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                final String _phone = "+88"+number.getText().toString().trim();
                final String _password = password.getText().toString().trim();

                if (_phone.isEmpty()) {
                    number.setError("Enter Your Phone Number");
                    number.requestFocus();
                    return;
                }
                if (_password.isEmpty()) {
                    password.setError("Enter a password");
                    password.requestFocus();
                    return;
                }

                DatabaseReference reference= FirebaseDatabase.getInstance().getReference("BloodBank_users");
                Query checkUser=reference.orderByChild("phone").equalTo(_phone);

                checkUser.addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot snapshot) {
                        if (snapshot.exists()) {
                            number.setError(null);
                            number.setEnabled(true);

                            String passwordFromDB = snapshot.child(_phone).child("password").getValue(String.class);

                            if (passwordFromDB.equals(_password)) {

                                password.setError(null);
                                password.setEnabled(true);
                                
                                SharedPreferences.Editor editor = getSharedPreferences("name", MODE_PRIVATE).edit();
                                editor.putString("phone", _phone);
                                editor.putBoolean("isLoggedIn", true);
                                editor.apply();
                                
                                Intent intent = new Intent(SignIn.this, BloodBank.class);
                                startActivity(intent);
                                finish();
                                
                            } else {
                                password.setError("Wrong Password Or User Name");
                                password.requestFocus();
                            }
                        }
                        else {
                            number.setError("This Number Is Not Registered");
                            number.requestFocus();
                        }
                    }
                    
                    @Override
                    public void onCancelled(@NonNull DatabaseError error) {

                    }
                });
            }
        });
        
        backToSignUp.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent= new Intent(SignIn.this,SignUp.class);
                startActivity(intent);
            }
        });


    }
}

Here is my Profile.Java

public class Profile extends AppCompatActivity {

    NavigationView nav;
    DrawerLayout drawerLayout;
    Toolbar toolbar;
    ActionBarDrawerToggle toggle;
    TextView name,blood;
    TextInputEditText name2,gender,number,address;
    Button updateBtn;

    private FirebaseAuth firebaseAuth;
    FirebaseAuth.AuthStateListener mAuthListener;


    @SuppressLint("SetTextI18n")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_profile);

        //ALl Hocks
        name = findViewById(R.id.userNameId);
        blood = findViewById(R.id.bloodId);
        name2 = findViewById(R.id.userNameId2);
        gender = findViewById(R.id.userGenderId);
        number = findViewById(R.id.userPhoneId);
        address = findViewById(R.id.userAddressId);
        updateBtn = findViewById(R.id.updateButtonId);

        firebaseAuth = FirebaseAuth.getInstance();

        mAuthListener = new FirebaseAuth.AuthStateListener(){
            @Override
            public  void  onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth){
                FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
                if(user!=null){
                    Toast.makeText(Profile.this, "User Exist", Toast.LENGTH_SHORT).show();
                }
                else {
                    Toast.makeText(Profile.this, "No User Available", Toast.LENGTH_SHORT).show();
                }
            }


        };



        //For Drawer Layout
        toolbar = findViewById(R.id.toolbarId);
        setSupportActionBar(toolbar);

        nav = findViewById(R.id.navigationId);
        drawerLayout = findViewById(R.id.drawerId);

        toggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.open, R.string.close);
        drawerLayout.addDrawerListener(toggle);
        toggle.syncState();

        nav.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {

                switch (item.getItemId()) {
                    case R.id.menu_home:
                        startActivity(new Intent(getApplicationContext(), Home.class));
                        finish();
                        break;

                    case R.id.menu_hospital:
                        startActivity(new Intent(getApplicationContext(), Hospital1.class));
                        finish();
                        break;

                    case R.id.menu_bloodbank:
                        startActivity(new Intent(getApplicationContext(), BloodBank.class));
                        finish();
                        break;

                    case R.id.menu_ambulance:
                        startActivity(new Intent(getApplicationContext(), Ambulance.class));
                        finish();
                        break;

                    case R.id.menu_logOut:
                        firebaseAuth.getInstance().signOut();
                        SharedPreferences prefers =getSharedPreferences("name", Context.MODE_PRIVATE);
                        SharedPreferences.Editor editor = prefers.edit();
                        editor.clear();
                        editor.apply();
                        startActivity(new Intent(getApplicationContext(), Home.class));
                        finish();
                        break;



                }

                return true;
            }
        });

        //For Drawer Layout
    }
    @Override
    protected void onStart() {
        super.onStart();
        firebaseAuth.addAuthStateListener(mAuthListener);
    }


    @Override
    protected void onResume() {
        super.onResume();
        firebaseAuth.addAuthStateListener(mAuthListener);
    }


    @Override
    protected void onStop() {
        super.onStop();
        firebaseAuth.removeAuthStateListener(mAuthListener);
    }



}



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source