蠢萌新手仿照写了个android小程序,安装闪退,全部c币奉上,求有爱心的大神帮忙》》》

蠢萌新手仿照写了个android小程序,安装闪退,全部c币奉上,求有爱心的大神帮忙》》》

问题描述:

不会github 百度网盘链接: http://pan.baidu.com/s/1pKWU9JX 密码: 1ffg

首先 赶快去学下Git版本控制然后连接Github,很简单的。
其次 闪退是你少加了setContentView(R.layout.choose_area); /*布局都没加载进去*/
还有就是楼主的JsonReader的语法是错误的我修改了下

    public class Utility {
    private static SimpleWeatherDB sSimpleWeatherDB;
    public static boolean handleResponse(SimpleWeatherDB simpleWeatherDB, InputStream in) {
                /*原先是 simpleWeatherDB = simpleWeatherDB*/
        sSimpleWeatherDB = simpleWeatherDB;
        JsonReader reader = new JsonReader(new InputStreamReader(in));
        boolean flag = false;
        try {
            reader.beginObject();
            while (reader.hasNext()) {
                String nodeName = reader.nextName();
                if (nodeName.equals("resultcode")) {
                                    /*添加了reader.nextString(),原因是必须获取name的value,否则报错*/
                    Log.d("Tag","resultcode"+reader.nextString());
                    flag = true;
                } else if (nodeName.equals("result") && flag) {
                    saveAreaToDatabase(reader);
                } else {
                    reader.skipValue();
                }
            }
            reader.endObject();
            //添加了:关闭流
            reader.close();
            return true;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return false;
    }

    /**
     * 保存到数据库
     */
    private static boolean saveAreaToDatabase(JsonReader reader) {
        String provinceName = null;
        String cityName = null;
        String districtName = null;
        List<String> provinceNames = new ArrayList<>();
        List<String> cityNames = new ArrayList<>();
        boolean changedProvince = false;
        boolean changedCity = false;
        int provinceId = 0;
        int cityId = 0;
        int districtId = 0;
        Province previousProvince = new Province();
        City previousCity = new City();
        try {
            reader.beginArray();
            while (reader.hasNext()) {
                reader.beginObject();
                while (reader.hasNext()) {
                    String nodeName = reader.nextName();
                    if (nodeName.equals("province")) {
                        provinceName = reader.nextString().trim();
                        if (!provinceNames.contains(provinceName)) {
                            provinceNames.add(provinceName);
                            changedProvince = true;
                            provinceId++;
                        }
                    } else if (nodeName.equals("city")) {
                        cityName = reader.nextString().trim();
                        if (!cityNames.contains(cityName)) {
                            cityNames.add(cityName);
                            changedCity = true;
                            cityId++;
                            Log.d("Utility", "changedCity");
                        }
                    } else if (nodeName.equals("district")) {
                        districtName = reader.nextString().trim();
                    } else {
                        reader.skipValue();
                    }
                }
                reader.endObject();

                if (changedProvince) {
                    Province province = new Province();
                    province.setId(provinceId);
                    province.setProvinceName(provinceName);
                    previousProvince = province;
                    sSimpleWeatherDB.saveProvince(province);
                    changedProvince = false;
                }

                if (changedCity) {
                    City city = new City();
                    city.setId(cityId);
                    city.setCityName(cityName);
                    city.setProvinceId(previousProvince.getId());
                    previousCity = city;
                    sSimpleWeatherDB.saveCity(city);
                    changedCity = false;
                }

                District district = new District();
                districtId++;
                district.setId(districtId);
                district.setDistrictName(districtName);
                district.setCityId(previousCity.getId());
                sSimpleWeatherDB.saveDistrict(district);
            }
            reader.endArray();
            return true;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return false;
    }
}

还有数据库:

  /**
     * 从数据库中读取城市下所有的区县信息
     */
    public List<District> loadDistricts(int cityId) {
        List<District> list = new ArrayList<>();
        Cursor cursor = db.query("District",null,"city_id=?",
                new String[]{String.valueOf(cityId)},null,null,null);
        if (cursor.moveToFirst()) {
            do {
                District district = new District();
                district.setId(cursor.getInt(cursor.getColumnIndex("id")));
                                //这里应该是名字写错了,原先是city_name
                district.setDistrictName(cursor.getString(cursor.getColumnIndex("district_name")));
                district.setCityId(cityId);
                list.add(district);
            } while (cursor.moveToNext());
        }
        if (cursor != null) {
            cursor.close();
        }
        return list;
    }

帮忙排查下是什么地方的错误就可以了,自己看不出。。。