o que é o erro no código a seguir de estúdio android

Nimesh Garg:

Esta parte do meu programa é adicionar o tempo atual para o meu firestore nuvem. O aplicativo funciona, exceto esta parte do programa. Sempre que eu tento executar esta parte do programa, o aplicativo pára de funcionar e não há nenhuma mudança no meu banco de dados.

 mreport.setOnClickListener(
                new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        String tower = mtower.getSelectedItem().toString();
                        String currentTime = new SimpleDateFormat("HH:mm:ss", Locale.getDefault()).format(new Date());
                        String currentDate = new SimpleDateFormat("dd-MM-yyyy", Locale.getDefault()).format(new Date());

                        CollectionReference dbr = db.collection("tower")
                                .document(tower).collection(currentDate)
                                .document("duty").collection("off");
                                dbr.add(currentTime)
                                .addOnSuccessListener(new OnSuccessListener<DocumentReference>() {
                                    @Override
                                    public void onSuccess(DocumentReference documentReference) {
                                        Toast.makeText(MainActivity.this,"REPORTED SUCCESSFULLY" , Toast.LENGTH_SHORT).show();
                                    }
                                })
                                .addOnFailureListener(new OnFailureListener() {
                                    @Override
                                    public void onFailure(@NonNull Exception e) {
                                        Toast.makeText(MainActivity.this, "EORROR!",Toast.LENGTH_SHORT).show();
                                    }
                                });
                    }
                });

E / superfície: getSlotFromBufferLocked: tampão desconhecido: 0x7f1108012880 D / OpenGLRenderer: endAllStagingAnimators sobre 0x7f10fc596c00 (DropDownListView) com punho 0x7f110b0fcce0 D / EGL_emulation: eglMakeCurrent: 0x7f10fd15db60: ver 3 1 (tinfo 0x7f11078e2ba0) D / AndroidRuntime: desligando VM E / AndroidRuntime: FATAL EXCEÇÃO: Processo principal: com.example.guardchecker, PID: 3684 java.lang.IllegalArgumentException: dados inválidos. Os dados devem ser um mapa ou um objeto POJO adequado, mas foi do tipo: java.lang.String em com.google.firebase.firestore.UserDataReader.convertAndParseDocumentData (com.google.firebase: firebase-Firestore @@ 21.4.1: 234) em com.google.firebase.firestore.UserDataReader.parseSetData (com.google.firebase: firebase-firestore @@ 21.4.1: 75) em com.google.firebase.firestore.DocumentReference.set (com.google.firebase : firebase-firestore @@ 21.4.1: 166) em com.

Frank Puffelen:

Firestore é um banco de dados de coleta / documento, onde você só pode armazenar um valor em um campo em um documento. O problema é que você está tentando armazenar um único valor em um documento Nuvem Firestore, mas um documento deve ter sempre pares chave-valor.

Então você vai precisar para determinar qual campo você deseja armazenar currentTime e, em seguida, passar um par de valor-chave. Por exemplo

Map<String, Object> values = new HashMap<>(); 
values.put("time", currentTime); 
dbr.add(values); 

No fragmento acima, você verá que nós colocamos o valor que deseja armazenar em um mapa com uma chave timee, em seguida, armazenar esse par de valor-chave no banco de dados.

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=345862&siteId=1
Recomendado
Clasificación