Как я могу разрешить OnSucceslistener на фрагмент TabLayout - PullRequest
1 голос
/ 23 мая 2019

Это база данных [] [1]

Я пытаюсь заполнить макет, созданный мной, на вкладке «Фрагмент макета» данными из базы данных Cloud Firestore и следующим кодомошибка говорит о том, что:

прослушиватель успеха в Задаче не может быть применен (addOnSuccessListener (com.google.android.gms.tasks.OnSuccessListener) в Задаче не может быть применен к (анонимному com.google.android.gms.tasks.OnSuccessListener))

Это мой код:

@Override
public void onStart(){
    super.onStart();

    notebookRef.get().addOnSuccessListener(new 
        OnSuccessListener<DocumentSnapshot>() {
            @Override
            public void onSuccess(DocumentSnapshot documentSnapshot) {
                if (documentSnapshot.exists()) {
                    Items items = documentSnapshot.toObject(Items.class);

                    String name1 = items.getName();
                    String company1 = items.getCompany();
                    String image1 = items.getImage();

                    name.setText(name1);
                    company.setText(company1);
                    Picasso.get()
                        .load(image1)
                        .fit()
                        .centerCrop()
                        .into(imageView);
                } else {
                    Toast.makeText(getContext(), "Document does not exist", Toast.LENGTH_SHORT).show();
            }
        }
    }).addOnFailureListener(new OnFailureListener() {
           @Override
           public void onFailure(@NonNull Exception e) {
                Log.d(TAG, e.toString());
           }
    });
}

1 Ответ

1 голос
/ 23 мая 2019

Вы получаете следующую ошибку:

addOnSuccessListener (com.google.android.gms.tasks.OnSuccessListener) в Задании нельзя применить к (анонимный com.google.android.gms.tasks.OnSuccessListener)

Поскольку вы используете DocumentSnapshot вместо QuerySnapshot. Чтобы решить эту проблему, используйте следующие строки кода:

FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
CollectionReference phonesRef = rootRef.collection("Phones");
phonesRef.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
    @Override
    public void onComplete(@NonNull Task<QuerySnapshot> task) {
        if (task.isSuccessful()) {
            for (QueryDocumentSnapshot document : task.getResult()) {
                Items items = document.toObject(Items.class);

                String name1 = items.getName();
                String company1 = items.getCompany();
                String image1 = items.getImage();

                name.setText(name1);
                company.setText(company1);
                Picasso.get()
                        .load(image1)
                        .fit()
                        .centerCrop()
                        .into(imageView);
            }
        }
    }
});

Теперь это будет работать, поскольку мы используем QuerySnapshot и , а не DocumentSnapshot для получения Item объектов.

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