Я использую api графика facebook для android. Я не могу извлечь какое-либо значение из GraphRequest ([...]). ExecuteAsync (). Таким образом, возвращаемая строка всегда пуста
public String getPost(){
new GraphRequest(
AccessToken.getCurrentAccessToken(), "me?fields=friends,name", null, HttpMethod.GET,
new GraphRequest.Callback() {
public void onCompleted(GraphResponse response) {
JSONObject object = response.getJSONObject();
try {
friends = object.getJSONObject("friends").getJSONObject("summary").getString("total_count");
} catch (JSONException e) {
e.printStackTrace();
};
}
}
).executeAsync();
return friends;
}
Возможный дубликат Превращение асинхронного вычисления в синхронное (блокирующее) вычисление




return friends вернет значение по умолчанию friends. здесь вы не получаете поведения executeAsync(). executeAsync() будет работать асинхронно, и метод вернется сразу после планирования задачи executeAsync().
Данные, то есть friends, изменяются внутри метода обратного вызова, поэтому вы должны вернуть их из onCompleted().
Для возврата данных вы можете использовать интерфейс обратного вызова. См. Как определить обратный вызов.
Конечно, это асинхронный вызов. Буквально он называется
executeAsync.friendsне устанавливается, когда вы возвращаетесь, он устанавливается вonCompleted, который будет вызываться когда-нибудь в будущем, в частности, когда этотGraphRequestбудет завершен (отсюда и названиеonCompleted). Это все равно, что спросить, почему ответ на ваше письмо волшебным образом не появился у вас в руке после того, как положил письмо в почтовый ящик.