Okay, let's do it step by step. First on your LoginActivity
where your user logins and enters email use .putExtra()
on Intent
to provide that email to your MainActivity
that starts after. Do it like this:
Intent intent = new Intent(LoginActivity.this, MainActivity.class);
intent.putExtra("user_email", email.getText().toString());
startActivity(intent);
finish();
Then to get this value in MainActivity
copy this in onCreate
:
String email = getIntent().getStringExtra("user_email");
After that call this to retrieve user from Firebase database:
DatabaseReference database = FirebaseDatabase.getInstance().getReference();
DatabaseReference databaseUsers = database.child("users");
Query usersQuery = databaseUsers.orderByChild("email").equalTo(email);
usersQuery.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
try {
User user = snapshot.getValue(User.class);
mUsername.setText(user.getName());
mEmail.setText(user.getEmail());
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
This will set text to your DrawerLayout
username and email TextView
.
And your User.java
looks like this:
@IgnoreExtraProperties
public class User {
private String email;
private String password;
private String uid;
private String userName;
public User () {
//Default constructor required for calls to DataSnapshot.getValue(User.class)
}
public String getName() { return userName };
public String email() { return email };
}
This should work now. Let me know how it goes.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…