我正在为学校建筑中的机械师创建一个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();
}
}
答案 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数据)