lanxun1992 2016-11-06 06:03 采纳率: 46.2%
浏览 764
已采纳

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

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

  • 写回答

2条回答 默认 最新

  • Newbie丶Chen 2016-11-06 09:48
    关注

    首先 赶快去学下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;
        }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试,帮帮忙吧
  • ¥15 #MATLAB仿真#车辆换道路径规划