onDatachange вызывается и создает sh приложение, когда я удаляю значение из базы данных - PullRequest
0 голосов
/ 15 февраля 2020

** Я создаю приложение, в котором есть функция отправки запроса пользователям, и я сохраняю идентификатор пользователя отправителя в качестве ключа и значение «истина» в качестве значения, когда пользователь отправляет запрос. Но когда он отменяет запрос, вызывается значение, удаленное из базы данных, но в dataChange, и сравнивается значение с нулем, как в коде **

friend_requests = FirebaseDatabase.getInstance().getReference().child("Users").child(phone)
                    .child("Friend_Requests").child(user.getPhoneNumber());
            friend_requests.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    if(dataSnapshot.getValue().equals("null"))
                    {

                    }
                    else
                    {
                        follow.setText("Requested");
                    }
                        Log.d("ahmed12", "onDataChange: "+dataSnapshot.getValue());


                }

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

                }

Ответы [ 2 ]

1 голос
/ 15 февраля 2020

Самое простое изменение - отменить сравнение:

if("null".equals(dataSnapshot.getValue(String.class)))

Это должно избавить от сообщения об ошибке, хотя трудно сказать, будет ли оно делать то, что вы хотите.

Причина последнего заключается в том, что сравнение с литеральной строкой "null" довольно редко. Обычно код сравнивается с null (вместо "null"), чтобы увидеть, инициализировано ли что-либо значением /.

Например, если вы хотите проверить, имеет ли моментальный снимок значение, вы должны сделать что с:

if(dataSnapshot.getValue(String.class) != null)

Или даже проще:

if(dataSnapshot.exists())
0 голосов
/ 15 февраля 2020

Попробуйте. Вы проверяете String = "null", которая является значением.

 @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                if(dataSnapshot.getValue()==null)
                {
                   //Logic for cancelled friend request
                }
                else
                {
                    follow.setText("Requested");
                }
                    Log.d("ahmed12", "onDataChange: "+dataSnapshot.getValue());

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