赏金两天后到期。回答此问题可获得+50声望奖励。中国希望引起更多的注意**这个问题。
我是新的改装,我有一个活动托管3个气象应用程序片段。我的第一个片段是使用OpenWeatherMapOne调用api显示当前天气数据的地方https://openweathermap.org/api/one-call-api. 我注意到不能在fragment类上进行改装请求调用,因此我尝试使用我的activity类,除了以下几行之外,其他所有内容都正常工作:
call.enqueue(new Callback<WeatherResponse>() {
@Override
public void onResponse(@NonNull Call < WeatherResponse > call, @NonNull Response < WeatherResponse > response) {
if (response.code() == 200) {
WeatherResponse weatherResponse = response.body();
assert weatherResponse != null;
time_zone.setText(response.body().getTimezone());
time_field.setText(response.body().getCurrent.getDt());
current_temp.setText(response.body().getCurrent().getTemp()+" ℃");
current_output.setText(response.body().getCurrent().getWeather().getDescription);
rise_time.setText(response.body().getCurrent().getSunrise()+" AM");
set_time.setText(response.body().getCurrent().getSunset()+" PM");
temp_out.setText(response.body().getCurrent().getTemp()+" ℃");
Press_out.setText(response.body().getCurrent().getPressure()+" hpa");
Humid_out.setText(response.body().getCurrent().getHumidity()+" %");
Ws_out.setText(response.body().getCurrent).getWind_speed()+" Km/h");
Visi_out.setText(response.body().getCurrent().getVisibility()+" m");
UV_out.setText(response.body().getCurrent().getUvi());
显示错误 Cannot resolve Symbol "response"
. 请问能做些什么来修理它?我的完整代码:homeactivity.java
public class HomeActivity extends AppCompatActivity {
public static String BaseUrl = "http://api.openweathermap.org/";
public static String AppId = "";
public static String lat = "9.0574";
public static String lon = "7.4898";
// User Timezone name, current time, current temperature, current condition, sunrise, sunset, temperature, pressure, humidity, wind_speed, visibility, UV Index
TextView time_zone, time_field, current_temp, current_output, rise_time, set_time, temp_out, Press_out, Humid_out, Ws_out, Visi_out, UV_out;
ConstraintLayout constraintLayout;
public static int count=0;
int[] drawable =new int[]{R.drawable.dubai,R.drawable.central_bank_of_nigeria,R.drawable.eiffel_tower,R.drawable.hong_kong,R.drawable.statue_of_liberty};
Timer _t;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
time_zone = findViewById(R.id.textView9);
time_field = findViewById(R.id.textView4);
current_temp = findViewById(R.id.textView10);
current_output = findViewById(R.id.textView11);
rise_time = findViewById(R.id.textView25);
set_time = findViewById(R.id.textView26);
temp_out = findViewById(R.id.textView28);
Press_out = findViewById(R.id.textView29);
Humid_out = findViewById(R.id.textView30);
Ws_out = findViewById(R.id.textView33);
Visi_out = findViewById(R.id.textView34);
UV_out = findViewById(R.id.textView35);
BottomNavigationView bottomNavigationView = findViewById(R.id.bottomNavigationView);
NavController navController = Navigation.findNavController(this, R.id.fragment);
NavigationUI.setupWithNavController(bottomNavigationView, navController);
constraintLayout = findViewById(R.id.layout);
constraintLayout.setBackgroundResource(R.drawable.dubai);
_t = new Timer();
_t.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() { // run on ui thread
@Override
public void run() {
if (count < drawable.length) {
constraintLayout.setBackgroundResource(drawable[count]);
count = (count + 1) % drawable.length;
}
}
});
}
}, 5000, 5000);
}
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(BaseUrl)
.addConverterFactory(GsonConverterFactory.create())
.build();
WeatherService service = retrofit.create(WeatherService.class);
Call<WeatherResponse> call = service.getCurrentWeatherData(lat, lon, AppId);
call.enqueue(new Callback<WeatherResponse>() {
@Override
public void onResponse(@NonNull Call < WeatherResponse > call, @NonNull Response < WeatherResponse > response) {
if (response.code() == 200) {
WeatherResponse weatherResponse = response.body();
assert weatherResponse != null;
time_zone.setText(response.body().getTimezone());
time_field.setText(response.body().getCurrent.getDt());
current_temp.setText(response.body().getCurrent().getTemp()+" ℃");
current_output.setText(response.body().getCurrent().getWeather().getDescription);
rise_time.setText(response.body().getCurrent().getSunrise()+" AM");
set_time.setText(response.body().getCurrent().getSunset()+" PM");
temp_out.setText(response.body().getCurrent().getTemp()+" ℃");
Press_out.setText(response.body().getCurrent().getPressure()+" hpa");
Humid_out.setText(response.body().getCurrent().getHumidity()+" %");
Ws_out.setText(response.body().getCurrent).getWind_speed()+" Km/h");
Visi_out.setText(response.body().getCurrent().getVisibility()+" m");
UV_out.setText(response.body().getCurrent().getUvi());
}
}
}
}
天气服务.java
public interface WeatherService {
@GET("data/2.5/weather?")
Call<WeatherResponse> getCurrentWeatherData(@Query("lat") String lat, @Query("lon") String lon, @Query("APPID") String app_id);
}
json响应:
{
"lat":9.08,
"lon":7.4,
"timezone":"Africa/Lagos",
"timezone_offset":3600,
"current":{
"dt":1609157237,
"sunrise":1609134244,
"sunset":1609175993,
"temp":305.15,
"feels_like":304.63,
"pressure":1012,
"humidity":29,
"dew_point":284.9,
"uvi":8.32,
"clouds":82,
"visibility":5000,
"wind_speed":1.5,
"wind_deg":200,
"weather":[
{
"id":721,
"main":"Haze",
"description":"haze",
"icon":"50d"
}
]
}
我使用http://www.jsonschema2pojo.org/
当前.java:
public class Current {
@SerializedName("dt")
@Expose
private Integer dt;
@SerializedName("sunrise")
@Expose
private Integer sunrise;
@SerializedName("sunset")
@Expose
private Integer sunset;
@SerializedName("temp")
@Expose
private Double temp;
@SerializedName("feels_like")
@Expose
private Double feelsLike;
@SerializedName("pressure")
@Expose
private Integer pressure;
@SerializedName("humidity")
@Expose
private Integer humidity;
@SerializedName("dew_point")
@Expose
private Double dewPoint;
@SerializedName("uvi")
@Expose
private Double uvi;
@SerializedName("clouds")
@Expose
private Integer clouds;
@SerializedName("visibility")
@Expose
private Integer visibility;
@SerializedName("wind_speed")
@Expose
private Double windSpeed;
@SerializedName("wind_deg")
@Expose
private Integer windDeg;
@SerializedName("weather")
@Expose
private List<Weather> weather = null;
public Integer getDt() {
return dt;
}
public void setDt(Integer dt) {
this.dt = dt;
}
public Integer getSunrise() {
return sunrise;
}
public void setSunrise(Integer sunrise) {
this.sunrise = sunrise;
}
public Integer getSunset() {
return sunset;
}
public void setSunset(Integer sunset) {
this.sunset = sunset;
}
public Double getTemp() {
return temp;
}
public void setTemp(Double temp) {
this.temp = temp;
}
public Double getFeelsLike() {
return feelsLike;
}
public void setFeelsLike(Double feelsLike) {
this.feelsLike = feelsLike;
}
public Integer getPressure() {
return pressure;
}
public void setPressure(Integer pressure) {
this.pressure = pressure;
}
public Integer getHumidity() {
return humidity;
}
public void setHumidity(Integer humidity) {
this.humidity = humidity;
}
public Double getDewPoint() {
return dewPoint;
}
public void setDewPoint(Double dewPoint) {
this.dewPoint = dewPoint;
}
public Double getUvi() {
return uvi;
}
public void setUvi(Double uvi) {
this.uvi = uvi;
}
public Integer getClouds() {
return clouds;
}
public void setClouds(Integer clouds) {
this.clouds = clouds;
}
public Integer getVisibility() {
return visibility;
}
public void setVisibility(Integer visibility) {
this.visibility = visibility;
}
public Double getWindSpeed() {
return windSpeed;
}
public void setWindSpeed(Double windSpeed) {
this.windSpeed = windSpeed;
}
public Integer getWindDeg() {
return windDeg;
}
public void setWindDeg(Integer windDeg) {
this.windDeg = windDeg;
}
public List<Weather> getWeather() {
return weather;
}
public void setWeather(List<Weather> weather) {
this.weather = weather;
}
}
天气.java:
public class Weather {
@SerializedName("id")
@Expose
private Integer id;
@SerializedName("main")
@Expose
private String main;
@SerializedName("description")
@Expose
private String description;
@SerializedName("icon")
@Expose
private String icon;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getMain() {
return main;
}
public void setMain(String main) {
this.main = main;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getIcon() {
return icon;
}
public void setIcon(String icon) {
this.icon = icon;
}
}
weatherresponse.java版本:
public class WeatherResponse {
@SerializedName("lat")
@Expose
private Double lat;
@SerializedName("lon")
@Expose
private Double lon;
@SerializedName("timezone")
@Expose
private String timezone;
@SerializedName("timezone_offset")
@Expose
private Integer timezoneOffset;
@SerializedName("current")
@Expose
private Current current;
public Double getLat() {
return lat;
}
public void setLat(Double lat) {
this.lat = lat;
}
public Double getLon() {
return lon;
}
public void setLon(Double lon) {
this.lon = lon;
}
public String getTimezone() {
return timezone;
}
public void setTimezone(String timezone) {
this.timezone = timezone;
}
public Integer getTimezoneOffset() {
return timezoneOffset;
}
public void setTimezoneOffset(Integer timezoneOffset) {
this.timezoneOffset = timezoneOffset;
}
public Current getCurrent() {
return current;
}
public void setCurrent(Current current) {
this.current = current;
}
}
我还想让我的片段类利用活动数据,请问怎么做?
3条答案
按热度按时间8ulbf1ek1#
可能有点像这样:
一定要上课
WeatherResponse
以及Current
正确注解。那个
?
在url中是没有用的。9rnv2umw2#
确保您的
enqueue()
看起来像这样2j4z5cfb3#
您可以使用livedata类来观察活动中的数据变化,并使用接口从片段调用改装请求。