Тост не работает, когда данных не существует - PullRequest
0 голосов
/ 04 июня 2018

Мой Toast не работает, если данные не существуют из базы данных Firebase.Что случилось?

public void searching(final String id){
    DatabaseReference databaseReference = FirebaseDatabase.getInstance()
            .getReference("Employee");
    Query query = databaseReference.orderByChild("id").equalTo(id);
    query.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for(DataSnapshot data: dataSnapshot.getChildren()){
                if(data.child("id").exists()) {
                    Employee employee = data.getValue(Employee.class);
                    hp.setText(employee.getPhoneNum());
                    address.setText(employee.getAddress());
                    fullName.setText(employee.getFullName());
                    Ic.setText(employee.getIcNum());
                    Sex.setText(employee.getSex());
                    emailVerify.setText(employee.getEmail());

                    getData.setVisibility(View.GONE);
                    update.setVisibility(View.VISIBLE);
                    fullName.setVisibility(View.VISIBLE);
                    Ic.setVisibility(View.VISIBLE);
                    tAddress.setVisibility(View.VISIBLE);
                    tPhone.setVisibility(View.VISIBLE);
                    hp.setVisibility(View.VISIBLE);
                    address.setVisibility(View.VISIBLE);
                    Sex.setVisibility(View.VISIBLE);

                }else{

                    Toast.makeText(getContext(),"Please Enter Correct Employee ID",
                            Toast.LENGTH_SHORT).show();

                    return;
                }
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
}

Ответы [ 2 ]

0 голосов
/ 04 июня 2018

Возможно, ваш запрос databaseReference.orderByChild("id").equalTo(id) это условие не в состоянии получить какую-либо запись, поэтому он не будет выполняться для цикла, поэтому вы можете сначала проверить количество дочерних элементов больше 0 или нет.

Вы можете попробовать этот способ, например:

    if (dataSnapshot.dataSnapshot.getChildrenCount() > 0){
    for(DataSnapshot data: dataSnapshot.getChildren()){
                    if(data.child("id").exists()) {
                        Employee employee = data.getValue(Employee.class);
                        hp.setText(employee.getPhoneNum());
                        address.setText(employee.getAddress());
                        fullName.setText(employee.getFullName());
                        Ic.setText(employee.getIcNum());
                        Sex.setText(employee.getSex());
                        emailVerify.setText(employee.getEmail());

                        getData.setVisibility(View.GONE);
                        update.setVisibility(View.VISIBLE);
                        fullName.setVisibility(View.VISIBLE);
                        Ic.setVisibility(View.VISIBLE);
                        tAddress.setVisibility(View.VISIBLE);
                        tPhone.setVisibility(View.VISIBLE);
                        hp.setVisibility(View.VISIBLE);
                        address.setVisibility(View.VISIBLE);
                        Sex.setVisibility(View.VISIBLE);

                    }else{

                        Toast.makeText(getContext(),"Please Enter Correct Employee ID",
                                Toast.LENGTH_SHORT).show();
                        return;
                    }
                  }
                } else {
                        Toast.makeText(getContext(),"No data found.",
                                Toast.LENGTH_SHORT).show();
                  }
0 голосов
/ 04 июня 2018

Когда dataSnapshot.getChildren() пусто, вы не войдете в блок for, поэтому Toast не появится.

...