I am trying to sign in a user with existing id but the app crashes when the sign in button is pressed.I don't want to use email as sign in I want to use the username as sign in.
JAVA CODE
public class login extends AppCompatActivity {
Button sign;
TextInputLayout usr,pass;
private View view;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
sign = findViewById(R.id.signin);
sign.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
loginUser(view);
}
});
}
public void loginUser(View view)
{
if(!validateusrName()|!validateemail())
{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 dbpass=dataSnapshot.child(userEnteredusrname).child("pass").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("pass",dbpass);
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 CAT
2020-04-20 00:23:56.279 32531-32531/com.studenthelper.bscithelp E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.studenthelper.bscithelp, PID: 32531
java.lang.IllegalStateException: Could not execute method for android:onClick
at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:402)
at android.view.View.performClick(View.java:6605)
at android.view.View.performClickInternal(View.java:6582)
at android.view.View.access$3100(View.java:778)
at android.view.View$PerformClick.run(View.java:25897)
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)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:397)
at android.view.View.performClick(View.java:6605)
at android.view.View.performClickInternal(View.java:6582)
at android.view.View.access$3100(View.java:778)
at android.view.View$PerformClick.run(View.java:25897)
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)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.widget.EditText com.google.android.material.textfield.TextInputLayout.getEditText()' on a null object reference
at com.studenthelper.bscithelp.login.validateusrName(login.java:35)
at com.studenthelper.bscithelp.login.loginUser(login.java:62)
at java.lang.reflect.Method.invoke(Native Method)
at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:397)
at android.view.View.performClick(View.java:6605)
at android.view.View.performClickInternal(View.java:6582)
at android.view.View.access$3100(View.java:778)
at android.view.View$PerformClick.run(View.java:25897)
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)