I got to know i havent initiated the textlayout usr=findViewById(R.id.username); pass=findViewById(R.id.usrPass); but now i have added them and got error again. I am able to check if user exits or not but unable to verify the pass.As i click sign in with wrong pass the app crash as well as with the wright passs it crash.
JAVA
public class login extends AppCompatActivity {
TextInputLayout usr,pass;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
usr=findViewById(R.id.username);
pass=findViewById(R.id.usrPass);
}
public void loginUser(View view)
{
if(!validateusrName()|!validatepass())
{return;}
else {
isUser();
}
}
private void isUser(){
final String userEnteredusrname = usr.getEditText().getText().toString().trim();
final String userEnteredpass = pass.getEditText().getText().toString().trim();
DatabaseReference reference= FirebaseDatabase.getInstance().getReference("users");
Query checkUser = reference.orderByChild("usrname").equalTo(userEnteredusrname);
checkUser.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if(dataSnapshot.exists()){
usr.setError(null);
usr.setErrorEnabled(false);
String passfrmdb=dataSnapshot.child(userEnteredusrname).child("pass").getValue(String.class);
if(passfrmdb.equals(userEnteredpass)){
usr.setError(null);
usr.setErrorEnabled(false);
String dbcllg=dataSnapshot.child(userEnteredusrname).child("cllg").getValue(String.class);
String dbemail=dataSnapshot.child(userEnteredusrname).child("email").getValue(String.class);
String dbname=dataSnapshot.child(userEnteredusrname).child("name").getValue(String.class);
String dbphno=dataSnapshot.child(userEnteredusrname).child("phno").getValue(String.class);
String dbusrname=dataSnapshot.child(userEnteredusrname).child("usrname").getValue(String.class);
Intent intent = new Intent(getApplicationContext(),MainActivity.class);
intent.putExtra("name",dbname);
intent.putExtra("usrname",dbusrname);
intent.putExtra("email",dbemail);
intent.putExtra("phno",dbphno);
intent.putExtra("cllg",dbcllg);
startActivity(intent);
}
else{
pass.setError("Wrong Password");
pass.requestFocus();
}
}
else {
usr.setError("NO SUCH USER FOUND");
usr.requestFocus();
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
}
LOG
2020-04-20 01:36:27.776 11545-11545/com.studenthelper.bscithelp E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.studenthelper.bscithelp, PID: 11545
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference
at com.studenthelper.bscithelp.login$1.onDataChange(login.java:82)
at com.google.firebase.database.Query$1.onDataChange(com.google.firebase:firebase-database@@19.2.1:179)
at com.google.firebase.database.core.ValueEventRegistration.fireEvent(com.google.firebase:firebase-database@@19.2.1:75)
at com.google.firebase.database.core.view.DataEvent.fire(com.google.firebase:firebase-database@@19.2.1:63)
at com.google.firebase.database.core.view.EventRaiser$1.run(com.google.firebase:firebase-database@@19.2.1:55)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6692)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)