So,I am trying to create a login page for server side my application.It's supposed to login only those users who have "IsStaff"="true"....I have used to many if-else statements in this code(for all the possible inputs-like IsStaff=false,or just wrong password in general),and all of them work well(I can say so as they do display their related toast message)...But when I do try to login from account with IsStaff=True....My application crashes with this in my logcat-
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference
at com.example.admincharade.SignIn$2.onDataChange(SignIn.java:66)
at com.google.android.gms.internal.firebase_database.zzfc.zza(Unknown Source:13)
at com.google.android.gms.internal.firebase_database.zzgx.zzdr(Unknown Source:2)
at com.google.android.gms.internal.firebase_database.zzhd.run(Unknown Source:71)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
So here's the code of login,and also the User class that I am referring to in this login method.Please help me out.Thanks in advance. Also I am sorry if I didn't follow any formatting rule by chance,I am pretty new and it's honestly pretty overwhelming with so many formatting options.
private void signInUser(final String phone, String password) {
final ProgressDialog mDialog=new ProgressDialog(SignIn.this);
mDialog.setMessage("Please Wait");
mDialog.show();
final String localPhone=phone;
final String localPassword=password;
users.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if(dataSnapshot.child(localPhone).exists())
{
mDialog.dismiss();
User user=dataSnapshot.child(localPhone).getValue(User.class);
user.setPhone(localPhone);
if (Boolean.parseBoolean(user.getIsStaff()))
{
if(user.getPassword().equals(localPassword))
{
Intent login=new Intent(SignIn.this,Home.class);
Common.currentUser=user;
startActivity(login);
finish();
}
else
Toast.makeText(SignIn.this, "Invalid Login", Toast.LENGTH_SHORT).show();
}
else
Toast.makeText(SignIn.this, "Only for Admin", Toast.LENGTH_SHORT).show();
}
else
{
mDialog.dismiss();
Toast.makeText(SignIn.this, "No such user found", Toast.LENGTH_SHORT).show();
}
}
public class User {
private String Name,Password,Phone,IsStaff;
public User(String name, String password) {
Name = name;
Password = password;
}
And this is user
public User() {
}
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
public String getPassword() {
return Password;
}
public void setPassword(String password) {
Password = password;
}
public String getPhone() {
return Phone;
}
public void setPhone(String phone) {
Phone = phone;
}
public String getIsStaff() {
return IsStaff;
}
public void setIsStaff(String isStaff) {
IsStaff = isStaff;
}
}