《第一行代码》开发酷欧天气遇到的问题

1.Http请求失败

修改AndroidManifest.xml,在application标签中加入下面一句。

android:usesCleartextTraffic="true"

我看到还有一种配置文件的方法,还没试过。

链接:《第一行代码》14章cool weather酷欧天气 网络请求相关问题_青山-CSDN博客

2.在点击某个市查询县数据时,一直跳屏显示"正在加载..."

在通过检查后,发现查询市和县数据的sql语句写错了。

cityList = LitePal.where("provinceId = ?", String.valueOf(selectedProvince.getProvinceCode())).find(City.class);

countyList = LitePal.where("cityId = ?", String.valueOf(selectedCity.getCityCode())).find(County.class);

将 getProvinceCode()和getCityCode()改为getId()即可。

cityList = LitePal.where("provinceId = ?", String.valueOf(selectedProvince.getId())).find(City.class);

countyList = LitePal.where("cityId = ?", String.valueOf(selectedCity.getId())).find(County.class);

3.下拉刷新控件 SwipeRefreshLayout

在书中引用的是support库的SwipeRefreshLayout,但是现在support库已经被androidx库代替,

所以需要在build.gradle中引入androidx库下的SwipeRefreshLayout控件依赖。也可以访问

Android开发者文档查看最新的依赖。

implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0"

 4.切换城市后下拉刷新bug

主要是定义的weatherId没有赋值。修改WeatherActivity.java。

public class WeatherActivity extends AppCompatActivity {
    ...

    //将weatherId声明为成员变量
    private String weatherId;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        ...
    }
    ...
    public void requestWeather(final String weatherId) {
        ...
            @Override
            public void onResponse(@NonNull Call call, @NonNull Response response) throws IOException {
                ...
                public void run() {
                    if (weather != null && "ok".equals(weather.status)) {
                        //切换城市后weatherId赋值
                        WeatherActivity.this.weatherId = weather.basic.weatherId;

                        SharedPreferences.Editor edit = PreferenceManager.getDefaultSharedPreferences(WeatherActivity.this).edit();
                        edit.putString("weather", responseStr);
                        edit.apply();
                        showWeatherInfo(weather);
                    } else {
                        Toast.makeText(WeatherActivity.this, getString(R.string.get_weather_info_failed), Toast.LENGTH_SHORT).show();
                    }
                    swipeRefreshLayout.setRefreshing(false);
                }
            ...
            }
    ...
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值