I want to retrieve data such as 'username' from firebase specific directory. Here is process i've tried but it's not working for some reason. Below is the part of code that i have written.I don't know whether it is correct or not.
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference currentu=database.getReference("Users");
enter code here
currentu.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
User user = dataSnapshot.getValue(User.class);
loggedinuser.setText(user.getUsername());
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
User Helper Class:
public class User {
private String email;
private String username;
private String password;
public User(){
}
public User(String email, String username,String password ) {
this.email = email;
this.username=username;
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
Here's the picture of my Firebase database. The red marked field(username) actually who's Currently logged in his name i want to show in a text field(loggedinuser) which i've set the getValue.
Now this process is not working.How can i retrieve the specific username who is currently logged in ?
Sign Up Class.
public class SignUp extends AppCompatActivity {
FirebaseDatabase database;
DatabaseReference users;
EditText edtUsername,edtPassword,edtMail;
Button btnSignUp,back_login;
private static final String REQUIRED = "Required";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
database = FirebaseDatabase.getInstance();
users=database.getReference("Users");
edtUsername=(EditText)findViewById(R.id.edtUsername);
edtPassword=(EditText)findViewById(R.id.edtPassword);
edtMail=(EditText)findViewById(R.id.edtMail);
btnSignUp=(Button)findViewById(R.id.btnSignUp);
back_login=(Button)findViewById(R.id.back_login);
btnSignUp.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
submit();
}
}
);
back_login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent (getApplicationContext(),Login.class);
startActivity(i);
}
});
confirm();
}
private void submit(){
final String em = edtMail.getText().toString();
final String en=edtUsername.getText().toString();
final String ep= edtPassword.getText().toString();
if(android.util.Patterns.EMAIL_ADDRESS.matcher(em).matches());
if (TextUtils.isEmpty(em)){
edtMail.setError(REQUIRED);
return;
}
if (TextUtils.isEmpty(en)){
edtUsername.setError(REQUIRED);
return;
}
if (TextUtils.isEmpty(ep)){
edtPassword.setError(REQUIRED);
return;
}
Toast.makeText(this, "Processing...", Toast.LENGTH_SHORT).show();
final User user = new User(
edtMail.getText().toString(),
edtUsername.getText().toString(),
edtPassword.getText().toString());
users.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.child(user.getUsername()).exists()) {
Toast.makeText(SignUp.this, "The username is Already Exist", Toast.LENGTH_SHORT).show();
setEditingEnabled(true);
}
else {
users.child(user.getUsername()).setValue(user);
Toast.makeText(SignUp.this, "Registration Successful", Toast.LENGTH_SHORT).show();
lukano();
confirmv();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
and Here is the login.class
public class Login extends AppCompatActivity {
FirebaseDatabase database;
DatabaseReference users;
ProgressBar pbar;
EditText edtUsername,edtPassword;
Button btnSignIn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
database = FirebaseDatabase.getInstance();
users=database.getReference("Users");
edtUsername=(EditText)findViewById(R.id.edtUsername);
edtPassword=(EditText)findViewById(R.id.edtPassword);
btnSignIn=(Button)findViewById(R.id.btnSignIn);
pbar = (ProgressBar) findViewById(R.id.pb1);
pbar.setVisibility(View.INVISIBLE);
btnSignIn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
signIn(edtUsername.getText().toString(),
edtPassword.getText().toString());
pbar.setVisibility(View.VISIBLE);
}
});
}
private void signIn(final String username,final String password) {
users.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.child(username).exists()){
if(!username.isEmpty()){
User login = dataSnapshot.child(username).getValue(User.class);
if(login.getPassword().equals(password)){
Toast.makeText(Login.this,"Log in Successful",Toast.LENGTH_SHORT).show();
Intent s = new Intent(getApplicationContext(),Interface.class);
startActivity(s);
finish();
}
else {
Toast.makeText(Login.this, "Username or Password is Incorrect", Toast.LENGTH_SHORT).show();
}
}
else
Toast.makeText(Login.this, "Username is not Registered", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}