2016-09-19 4 views
0

Für meine ParseUsers gibt es eine Spalte mit dem Namen „profilePicture“ vom Typ ParseFile, und da ein Benutzer Ich versuche, die ParseFile abrufen und wandeln es mit dem folgenden Code in Bitmap:Ärger Abrufen von ParseFile für ParseUser

ParseUser user = ParseUser.getCurrentUser(); 
    BitmapFactory.Options options = new BitmapFactory.Options(); 
    options.inSampleSize = 4; 
    Bitmap image = null; 

    ParseFile profilePicture = user.getParseFile("profilePicture"); 
    System.out.println("DATA: " + profilePicture.isDataAvailable()); 

    try { 
     InputStream inputStream = profilePicture.getDataStream(); 
     image = BitmapFactory.decodeStream(inputStream, null, options); 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 
    return image; 

Getting the ParseFile funktioniert einwandfrei, aber jedesmal gibt isDataAvailable() false zurück, obwohl ich die Spalte manuell überprüfe, um sicherzustellen, dass sich in der Spalte "profilePicture" für diesen bestimmten Benutzer eine Bilddatei befindet. Was könnte die Ursache dafür sein?

Antwort

1

Verwenden .getDataInBackground Methode und entschlüsseln Sie Ihre Datei in der done() Methode

profilePicture.getDataInBackground(new GetDataCallback() { 
    @Override 
    public void done(byte[] data, ParseException e) { 
     // Do your magic 
    } 
}); 
+0

Ich möchte während der onCreate() Stufe der Aktivität das Bild in der Lage sein zu zeigen, aber wenn ich getDataInBackground verwenden das Bild wird nur sein abgerufen nach onCreate() beendet, und wenn ich versuche, getData die Info zu verwenden, sind die Daten noch nicht verfügbar. Irgendwelche Vorschläge, wie man das macht? – myrocks2

+0

Die ganze Idee ist nicht, Ihre onCreate() zu blockieren. Warum denkst du, dass du das Bild haben musst, bevor onCreate() fertig ist? –

+0

Weil ich möchte, dass alle Benutzerinformationen sofort angezeigt werden, wenn die Aktivität für den Benutzer sichtbar wird, einschließlich des Profilbildes des Benutzers. – myrocks2