Не могу получить данные из onResponse.
public void loadData() {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(myurl)
.addConverterFactory(GsonConverterFactory.create())
.build();
RESTPK service = retrofit.create(RESTPK.class);
Call
Если в onResponse вывести на экран переменную pathPoster, то она показывает правильный результат, но если ее вывести на экран после вызова loadData(), то в ней уже ничего нет и приложение вылетает с ошибкой. Получить данные получил, но пользоваться ими не получается.
loadData();
System.out.println(pathPoster);
ошибка:
FATAL EXCEPTION: mainjava.lang.RuntimeException: Unable to start activity ComponentInfo{com.awesomedevelop.recyclerview/com.awesomedevelop.recyclerview.MainActivity}: java.lang.NullPointerException
Ответ
Потому что у тебя асинхронный запрос. onResponse вызывается после загрузки информации, а System.out.println(pathPoster) вызывается до загрузки, судя по твоему коду. То есть, когда информация еще не успела загрузиться из сети. А падает потому что строка в которую ты не записал еще данные по-умолчанию null.
Либо делай синхронный запрос, либо все действия после загрузки выполняй в onResponse.
Если переделаешь на синхронный запрос, учти, что синхронные запросы в сеть, нельзя делать в Ui потоке приложения.
http://square.github.io/retrofit/2.x/retrofit/
Комментариев нет:
Отправить комментарий