I have designed an app which retrieves a user's data from the firebase server. But the java code is unable to retrieve the user's details from the realtime database.
The error that is raised is that the below lines receive a NullPointer
.
User userDashboard = dataSnapshot.getValue(User.class);
USERNAME.setText(userDashboard.getName().toString().trim());
PASSWORD.setText(userDashboard.getPassword().toString().trim());
EMAIL.setText(userDashboard.getEmail().toString().trim());
Below is the java code.
package com.example.loginuiapp;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
public class UserDashboard extends AppCompatActivity {
Button btnLogout;
private TextView USERNAME, PASSWORD, EMAIL;
private FirebaseAuth firebaseAuth;
private FirebaseDatabase firebaseDatabase;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// MAKING THE APP FULLSCREEN. KINDLY DO NOT DELETE THE BELOW LINES WITHOUT PRIOR KNOWLEDGE
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_user_dashboard);
USERNAME = findViewById(R.id.display_username);
PASSWORD = findViewById(R.id.display_usr_password);
EMAIL = findViewById(R.id.display_usr_email);
firebaseAuth = FirebaseAuth.getInstance();
firebaseDatabase = FirebaseDatabase.getInstance();
DatabaseReference databaseReference = firebaseDatabase
.getReference(firebaseAuth.getUid());
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {/*
User userDashboard = dataSnapshot.getValue(User.class);
USERNAME.setText(userDashboard.getName().toString().trim());
PASSWORD.setText(userDashboard.getPassword().toString().trim());
EMAIL.setText(userDashboard.getEmail().toString().trim());*/
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(UserDashboard.this, "Database Error", Toast.LENGTH_LONG).show();
}
});
// Handling the Logout action when the logout button is clicked.
btnLogout = findViewById(R.id.logout_button);
btnLogout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FirebaseAuth.getInstance().signOut();
// Read this thread to know what's happening
// https://stackoverflow.com/questions/53334017/back-button-will-bring-to-home-page-after-firebase-logout-on-app
Intent intent = new Intent(UserDashboard.this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_CLEAR_TOP
| Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
finish();
Toast.makeText(UserDashboard.this, "Successfully Logged Out!", Toast.LENGTH_LONG).show();
}
});
}
}
Thank you for your help!