2016-09-19 1 views
0

Для моих ParseUsers, есть столбец с именем «profilePicture» типа ParseFile и дал пользователь я стараюсь, чтобы получить ParseFile и преобразовать его в растровое изображение с помощью следующего кода:Trouble Получение ParseFile для 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; 

Получение ParseFile работает нормально, но каждый раз isDataAvailable() возвращает false, хотя я вручную проверяю столбец, чтобы убедиться, что в столбце profilePicture для этого конкретного пользователя есть файл изображения. Что может быть причиной этого?

ответ

1

Используйте .getDataInBackground метод и декодировать файл в методе done()

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

Я хочу, чтобы иметь возможность отобразить изображение на стадии OnCreate() деятельности, но если я использую getDataInBackground картина будет только после завершения onCreate() завершается, и если я попытаюсь использовать getData, то данные еще не доступны. Любые предложения о том, как это сделать? – myrocks2

+0

Вся идея состоит не в том, чтобы заблокировать ваш onCreate(). Почему вы думаете, что у вас должно быть изображение до того, как onCreate() закончит? –

+0

Поскольку я хочу, чтобы вся информация пользователя была легко отображена, когда действие становится видимым для пользователя, которое включает в себя изображение профиля пользователя. – myrocks2

 Смежные вопросы

  • Нет связанных вопросов^_^