, пожалуйста, сообщите мне о моей проблеме.
Вот мой корневой класс модели, фактически сгенерированный POJO:
public class WeatherRootObject extends SugarRecord {
public WeatherRootObject()
{
}
public WeatherRootObject(Current current, Location location, Forecast forecast) {
this.current = current;
this.location = location;
this.forecast = forecast;
}
@SerializedName("current")
private Current current;
@SerializedName("location")
private Location location;
@SerializedName("forecast")
private Forecast forecast;
public void setCurrent(Current current){
this.current = current;
}
public Current getCurrent(){
return current;
}
public void setLocation(Location location){
this.location = location;
}
public Location getLocation(){
return location;
}
public void setForecast(Forecast forecast){
this.forecast = forecast;
}
public Forecast getForecast(){
return forecast;
}
@Override
public String toString(){
return
"WeatherRootObject{" +
"current = '" + current + '\'' +
",location = '" + location + '\'' +
",forecast = '" + forecast + '\'' +
"}";
}
}
Я пытаюсь сохранить объект в базу данных только для его кэширования ичтобы отобразить его на экране.Вот мой метод в Presenter, предназначенный для загрузки данных и их отображения на экране:
public static void getWeatherForecastOneDay(final TextView conditionTextView,
final TextView temperatureTextView,
final TextView temperatureFeelsLikeTextView,
final TextView pressureTextView,
final TextView windSpeedTextView,
final TextView windDirectionTextView,
final TextView humidityTextView,
final ImageView weatherPicture) {
context = MainActivity.context;
String KEY = context.getResources().getString(R.string.api_key);
Presenter.getWeatherForecastApi().getForecast7Days(KEY, "Nizhny Novgorod", 7, "ru")
.enqueue(new Callback<WeatherRootObject>() {
@Override
public void onResponse(Call<WeatherRootObject> call, Response<WeatherRootObject> response) {
WeatherRootObject weatherRootObject = new WeatherRootObject(
response.body().getCurrent(),
response.body().getLocation(),
response.body().getForecast());
weatherRootObject.save();
WeatherRootObject weatherRootObjectSaved = WeatherRootObject.findById(WeatherRootObject.class, 1);
humidity = weatherRootObjectSaved.getCurrent().getHumidity();
imageURI = "http:" + weatherRootObjectSaved.getCurrent().getCondition().getIcon();
condition = weatherRootObjectSaved.getCurrent().getCondition().getText();
windSpeed = weatherRootObjectSaved.getCurrent().getWindKph();
windDirection = weatherRootObjectSaved.getCurrent().getWindDir();
pressure = weatherRootObjectSaved.getCurrent().getPressureMb();
temperature = weatherRootObjectSaved.getCurrent().getTempC();
temperatureFeelsLike = weatherRootObjectSaved.getCurrent().getFeelslikeC();
humidityTextView.setText(String.valueOf(humidity));
Picasso.get().load(imageURI).into(weatherPicture);
conditionTextView.setText(String.valueOf(condition));
windSpeedTextView.setText(String.valueOf(windSpeed));
windDirectionTextView.setText(String.valueOf(windDirection));
pressureTextView.setText(String.valueOf(pressure));
temperatureTextView.setText(String.valueOf(temperature));
temperatureFeelsLikeTextView.setText(String.valueOf(temperatureFeelsLike));
}
@Override
public void onFailure(Call<WeatherRootObject> call, Throwable t) {
Log.i("GETTA", t.toString());
}
});
}
Так что, когда я просто загружаю информацию с помощью модернизации, она отлично работает.Когда я пытаюсь сохранить данные и использовать их при заполнении TextView, я всегда получаю исключение NullPointerException: попытка вызвать виртуальный метод int com.weather.Model.Current.getHumidity () 'для ссылки на пустой объект
Итак, похоже, что данные не сохраняются в БД, когда я запрашиваю их, и я не могу понять, почему.