Auto-Inkrement-Wert in Feuerstellung

Wie kann ich die auto-Inkrement-Wert, gespeichert in der Feuerstellung aus einem Android client?

Derzeit: ich erkläre int id = 1. Wenn ich erhöhen, ich sehe die Werte 2, 3 usw. gespeichert werden. Das ist in Ordnung, aber wenn ich re-führen Sie das Projekt, id gesetzt ist gleich wieder auf 1.

Ich will es verhält sich wie eine statische variable, so kann ich erstellen Sie eine id, die gehen von 1 bis unendlich, ohne zurücksetzen.

AKTUALISIERT FEHLGESCHLAGEN

Ich Folgendes zum bestehen der FB-Referenz und eine string an die Funktion incrementCounter.

if(language_chosen.equalsIgnoreCase("english"))
 {
   Firebase publRef = f.child("Language").child("English").child("Message");
   Firebase newPublRef = publRef.push();
   writeMsgActivity demo = new writeMsgActivity();
   demo.incrementCounter(newPublRef,the_msg_enter);                                 
  }

Nun ich versuche es mal mit der übergebenen Referenz und string an public void incrementCounter(Firebase publref,String my_msg) in der oncomplete-Methode, aber es gibt mir eine Fehlermeldung.

   public void incrementCounter(Firebase publref,String my_msg) {
    publref.runTransaction(new Transaction.Handler() {
        @Override
        public Transaction.Result doTransaction(final MutableData currentData) {
            if (currentData.getValue() == null) {
                currentData.setValue(1);
            } else {
                currentData.setValue((Long) currentData.getValue() + 1);
            }

            return Transaction.success(currentData);
        }

        public void onComplete(FirebaseError firebaseError, boolean committed, DataSnapshot currentData) {
            if (firebaseError != null) {
                System.out.println("Firebase counter increment failed.");
            } else {
                System.out.println("Firebase counter increment succeeded.");

                Map<String, Object> publ = new HashMap<String, Object>();
                publ.put("pubMsg", my_msg);
                publ.put("id",currentData);
                publref.setValue(publ);
            }
        }
    });
}

AKTUALISIERT GELÖST

                final Firebase upvoteref = new Firebase("https://shareurday.firebaseio.com/Message/"+msg_id+"/upvotes"); 

            upvoteref.runTransaction(new Transaction.Handler() {
                @Override
                public Transaction.Result doTransaction(final MutableData currentData) {
                    if (currentData.getValue() == null) {
                        currentData.setValue(1);
                    } else {
                        currentData.setValue((Long) currentData.getValue() + 1);
                    }
                    return Transaction.success(currentData);
                }

                public void onComplete(FirebaseError firebaseError, boolean committed, DataSnapshot currentData) {
                    if (firebaseError != null) {
                        System.out.println("Firebase counter increment failed.");
                    } else {
                        System.out.println("Firebase counter increment succeeded.");
                    }
                }
            });

Die variable msg_id ist die zufällig generierte id von push.

  • Ich bin nicht sicher über das, was code, den Sie verwenden, mit FB und neu Laden, was bedeutet das hier ?. Aber wenn Sie an derselben Funktion (die Satz-id=1) auf neu laden, erhalten Sie id-1. Sie haben, um die Satz-id in einer Datei/Datenbank Und aktualisieren in diesem Speicher.
  • Ich kann es in der Datenbank aber jedes mal wenn ich neu das Programm ausführen, es setzt den integer-id=1
  • Auf jeder ausführen, die Sie brauchen, um zu überprüfen Existenz in der Datei/db... INSERT WENN NICHT VORHANDEN, SONST AKTUALISIEREN . ur Q scheint generische, aber ja u brauchen, um zu verfolgen alle gleichzeitigen änderungen, wenn das Objekt/Datensatz geteilt wird.
InformationsquelleAutor nothingness | 2015-03-07
Schreibe einen Kommentar