FB “Fehler beim konvertieren einen Wert vom Typ java.util.HashMap int"

In dieser Zeile von meinem code in meiner OnDataChange() Methode in der ValueEvenListener:

int latest = dataSnapshot.getValue(Integer.class);

Ich bin immer ein DatabaseException mit dem Fehler Failed to convert a value of type java.util.HashMap to int.

Jedoch in meiner Datenbank, können Sie einen Blick auf das Bild unten:

FB “Fehler beim konvertieren einen Wert vom Typ java.util.HashMap int

Es ist offensichtlich nicht eine HashMap aber ein int. Ist das ein bug oder mache ich etwas falsch? Was kann ich tun, um es zu beheben? Warum ist es abrufen einer Hashmap wenn der Wert int?

Voll dataSnapshot:

final DatabaseReference database = FirebaseDatabase.getInstance().getReference();
        database.child("Campaigns").child(key).child("count");
        database.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                int latest = dataSnapshot.getValue(Integer.class);
                button.setText(latest + "");
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {
                Toast.makeText(context, context.getString(R.string.error) + ": " + databaseError.getMessage(), Toast.LENGTH_SHORT).show();
            }
        });

Datenbank:

Campaigns:{
  -JDKKDJIIDJFIDJKDK:{
      count:2432
   }
}
  • teilen Sie die Erklärung der dataSnapshot - und auch, was Sie hinzufügen, um es zu
  • sicher, ust sec
  • wenn die dataSnapshot hat nur den Wert, der u wollen..in unserem Fall 2580 versuchen int Letzte = Integer.parseInt(dataSnapshot); auch, vielleicht solltest du konvertieren datasnapshot.toString (), aber ich kann mich nicht erinnern EDIT: wenn dies nicht funktioniert, bitte Melden Sie die dataSnapshot so kann ich Ihnen die vollständige Antwort
  • Es hat nicht funktioniert, bekomme ich eine NumberFormatException. Und bitte erklären, was meinst du mit "Log der dataSnapshot". Danke für den Versuch zu helfen
  • innerhalb der OnDataChange fügen Sie diese Zeile - > Melden.w("eeee", dataSnapshot.toString()); , dann schauen Sie in die logcat nach dem ausführen der app, und suchen Sie nach etwas mit dem Namen "eeee"
  • Werde ich Bearbeiten, meine Frage
  • dataSnapshot mindestens 20 Zeilen code...
  • hi @AbAppletic, dein problem ist in der Letzte, entfernen Sie es und es sollte funktionieren. Auch dies database = database.child("Campaigns").child(key).child("count");
  • Nein, es ist nicht, siehe meine Antwort unten
  • es ist, weil Sie nicht speichern, können Sie den Wert auf der Datenbank variable in dieser Zeile database.child("Campaigns").child(key).child("count"); (Sie sollten dies tun database = database.child("Campaigns").child(key).child("count");) und entfernen Sie die Finale denn Finale - Schlüsselwort lässt sich der Wert der Variablen kann nicht geändert werden.

InformationsquelleAutor Ab_ | 2016-08-09
Schreibe einen Kommentar