пользователь не существует в firebase? - PullRequest
0 голосов
/ 07 июля 2019

У меня авторизация с firebase, когда я набираю и ИД пользователя, которые уже существуют в моей базе данных, тогда он успешно входит в систему, но когда я набираю неправильный ключ, который не является моим firebase, тогда apk get crash

private DatabaseReference ref;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        userID = (EditText) findViewById(R.id.Username);
        ref = FirebaseDatabase.getInstance().getReference().child("muhamadgamerstrings");
    }

     public void btnlogin_Click(View view) {
        final String usrID = userID.getText().toString();

         try {
        ref.child(usrID).addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                muhamadgamerstrings Userr = dataSnapshot.getValue(muhamadgamerstrings.class);
                if(usrID.equals(Userr.getUserID()))
                {
                    Toast.makeText(MainActivity.this,
                            "login Succesful",Toast.LENGTH_SHORT).show();
                    Intent start = new Intent(MainActivity.this,start.class);
                    startActivity(start);
                }else {
                    Toast.makeText(MainActivity.this,
                            "Wrong Key",Toast.LENGTH_SHORT).show();
                }

            }
     @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });
        }catch (Exception xe){
            Toast.makeText(MainActivity.this,
                    "login false",Toast.LENGTH_SHORT).show();
        }

    }

}

`
    That is my mainactivity
The error is from logcat shows here
    if(usrID.equals(Userr.getUserID()))`  java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.yuhamadgamer.loginwithfire.muhamadgamerstrings.getUserID()' on a null object reference`

1 Ответ

0 голосов
/ 07 июля 2019

Значение в базе данных реального времени Firebase muhamadgamerstrings равно нулю.

потому что

когда я набираю неправильный ключ, который не является моим firebase, то apk get авария

при вводе идентификатора, которого нет в базе данных, база данных отправит нулевой снимок. так вот причина NullPointerException .

поэтому перед выполнением операций необходимо проверить его на ноль

public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                muhamadgamerstrings Userr = dataSnapshot.getValue(muhamadgamerstrings.class);
                if(Userr != null && usrID.equals(Userr.getUserID()))
                {
                    Toast.makeText(MainActivity.this,
                            "login Succesful",Toast.LENGTH_SHORT).show();
                    Intent start = new Intent(MainActivity.this,start.class);
                    startActivity(start);
                }else {
                    Toast.makeText(MainActivity.this,
                            "Wrong Key",Toast.LENGTH_SHORT).show();
                }

            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...