2016-04-09 6 views
0

Ich versuche, ein Objekt zu Parse Cloud speichern und objectId erhalten, wenn es erfolgreich gespeichert wurde. Ich drucke die Ausnahmen in den Protokollen, wenn es irgendwelche gibt. Nach dem Klicken auf die Schaltfläche "Speichern" wird in den Protokollen keine ParseException angezeigt, aber die zurückgegebene Objekt-ID ist immer null.ObjectId in Parse ist NULL, obwohl keine ParseException beim Speichern von Objekt in Parse-Wolke

dies meine Unterklasse ist:

@ParseClassName("PetOwner") 

public class PetOwner erweitert ParseObject {

public PetOwner(){ super(); } 

public String getOwnerId(){ 
    return getString("objectId"); 
} 

public String getOwnerName(){ 
    return getString("name"); 
} 

public ParseGeoPoint getLocation(){ 
    return getParseGeoPoint("location"); 
} 

public String getPhoneNumber(){ 
    return getString("phoneNumber"); 
} 

public Number getRadius(){ 
    return getNumber("searchRadius"); 
} 

public Installation getInstallation(){ 
    return (Installation) getParseObject("installation"); 
} 

public String getBackupEmail(){ 
    return getString("backupemail"); 
} 

public String getEmail(){ 
    return getString("email"); 
} 

public Date createdAt(){ 
    return getDate("createdAt"); 
} 

public Date updatedAt(){ 
    return getDate("updatedAt"); 
} 

public void setOwnerName(String name){ put("name", name); } 

public void setPhoneNumber(String phone){ put("phoneNumber", phone); } 

public void setEmail(String email){ put("email", email); } 

public static ParseQuery<PetOwner> getQuery(){ 
    return ParseQuery.getQuery(PetOwner.class); 
} 

}

Dies ist der Code Ich schreibe das Objekt in die Cloud speichern nach dem Aufstehen die Werte der Namen, Telefonnummern und E-Mail-Felder, die von den Benutzern in der EditText-Ansicht eingegeben wurden.

FloatingActionButton saveProfile = (FloatingActionButton) findViewById(R.id.save_button); 
saveProfile.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     if (nameChanged && checkPhoneNumber() && checkEmail()) { 
       final PetOwner petOwner = new PetOwner(); 
       petOwner.setOwnerName(userName.getText().toString()); 
       petOwner.setPhoneNumber(phoneNumber.getText().toString()); 
       petOwner.setEmail(email.getText().toString()); 

       petOwner.saveInBackground(new SaveCallback() { 
        @Override 
        public void done(ParseException e) { 
        if (e == null) { 
         Log.d(TAG, "after saveinbackground is done"); 
         Log.d(TAG, petOwner.getOwnerId() + " is the saved object id"); 
        } else { 
         Log.d(TAG, "saveinbackground NOT done"); 
         Log.e(TAG, "exception", e); 
        } 
       } 
      }); 
     } 
    } 
}); 

Die Protokolle zeigen dies:

04-09 19:33:50.385 31818-31818/us.furalert.Furalert D/PetOwnerDetails: after saveinbackground is done 
04-09 19:33:50.385 31818-31818/us.furalert.Furalert D/PetOwnerDetails: null is the saved object id 

Ich bin nicht in der Lage zu machen, was mit meinem Code falsch ist. Warum ist die Objekt-ID null?

Bitte helfen!

+0

Was abrufen, wenn Sie getString ("objectId") mit getObjectId() als ParseObjects eine eingebaute ersetzen hat in Methode zum Abrufen von objectId – cYrixmorten

+0

@cYrixmorten vielen Dank !!! endlich funktioniert es! –

+0

Schön :-) kein Problem. Ich habe es nur als Antwort hinzugefügt. – cYrixmorten

Antwort

0

ersetzen getString ("objectId") mit getObjectId() als ParseObjects hat eine integrierte Methode der objectId

Verwandte Themen