保存对JSON文件Android的更改

时间:2014-01-14 18:49:57

标签: android json updates

我正在为学校建筑中的机械师创建一个Android应用程序。他们需要扫描一个房间的二维码,看看教室里是否有任何东西被打破(就像需要修理的投影仪一样)。修复此问题后,他们可以将复选框设置为true,以便其他用户知道此作业已完成。

我正在使用json文件获取我的信息,所以当用户选中复选框时,我的json文件需要更新..我已经尝试了很多,但没有找到解决方案.. < / p>

有人能帮助我吗?

这就是我所知道的......

finished.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                        @Override
                        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                            if (isChecked) {
                                checked = true;
                            } else {
                                checked = false;
                            }
                        }
                    });

                    if (checked) {
                        //JSONObject modified = new JSONObject();
                        try {
                            JSONArray d = new JSONArray();
                            JSONObject tour;

                            tour = new JSONObject();
                            tour.put("done" + (i + 1), "Yes");
                            d.put(tour);

                            String text = data.toString();
                            FileOutputStream fos = openFileOutput("tours", MODE_PRIVATE);
                            fos.write(text.getBytes());
                            fos.close();
                        } catch (JSONException e) {
                            e.printStackTrace();
                        } catch (FileNotFoundException e) {
                            e.printStackTrace();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    } else {
                        //JSONObject modified = new JSONObject();
                        try {
                            JSONArray d = new JSONArray();
                            JSONObject tour;

                            tour = new JSONObject();
                            tour.put("done" + (i + 1), "No");
                            d.put(tour);

                            String text = data.toString();
                            FileOutputStream fos = openFileOutput("tours", MODE_PRIVATE);
                            fos.write(text.getBytes());
                            fos.close();
                        } catch (JSONException e) {
                            e.printStackTrace();
                        } catch (FileNotFoundException e) {
                            e.printStackTrace();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }

2 个答案:

答案 0 :(得分:0)

您必须从侦听器内的if (checked) {开始移动代码,或者从侦听器中调用的方法中移动代码。只有在您分配监听器时检查值(=点击前),Checked的值才会在单击后更改。

答案 1 :(得分:0)

试试此代码

finished.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView,
                boolean isChecked) {
            String status = "No";
            if (isChecked) {
                status = "Yes";
            }
                // JSONObject modified = new JSONObject();
                try {
                    JSONArray d = new JSONArray();
                    JSONObject tour;

                    tour = new JSONObject();
                    tour.put("done" + (i + 1), status);
                    d.put(tour);

                    String text = data.toString();
                    FileOutputStream fos = openFileOutput("tours",
                            MODE_PRIVATE);
                    fos.write(text.getBytes());
                    fos.close();
                } catch (JSONException e) {
                    e.printStackTrace();
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            } else {
                // JSONObject modified = new JSONObject();
                try {
                    JSONArray d = new JSONArray();
                    JSONObject tour;

                    tour = new JSONObject();
                    tour.put("done" + (i + 1), "No");
                    d.put(tour);

                    String text = data.toString();
                    FileOutputStream fos = openFileOutput("tours",
                            MODE_PRIVATE);
                    fos.write(text.getBytes());
                    fos.close();
                } catch (JSONException e) {
                    e.printStackTrace();
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

    });

有一个“status”变量,当它被选中或未选中时,它会将状态设置为YES或NO(或任何你想要的json数据)