#java #android #json #class
#java #Android #json #класс
Вопрос:
Очень новый, так что потерпите меня.
Метод BloodPressure()
вызывается, MainActivity
и значения извлекаются и «помещаются» в jsonObject
.
Метод getBloodPressure()
вернет этот jsonobject и будет вызван в другом модуле.
JSONObject в getBloodPressure()
всегда пуст {}.
Я попытался отладить. Таким образом, я вижу, что json создан точно. Но когда я «возвращаю JSONObject» в getBloodPressure, он просто сбрасывается и становится {}.
Как мне вызвать JSONObject со значениями давления крови?
MainActivity
private static void dumpDataSet(DataSet dataSet) {
.
.
.
healthdata.BloodPressure(type, systolic, diastolic, sdate, edate );
//printed this and it works perfectly fine
}
HealthData.java
public class HealthData {
private String steps,heartRate,systolic, diastolic, bloodGlucose,bodyTemperature,age, startDate, endDate, dataType;
JSONObject jsonObject = new JSONObject();
public HealthData(){
super();
}
public void BloodPressure(String type, String sys, String dia, String sdate, String edate) {
dataType = type;
systolic = sys;
diastolic = dia;
startDate = sdate;
endDate = edate;
try {
jsonObject.put("dataType", dataType);
jsonObject.put("SystolicValue", systolic);
jsonObject.put("DiastolicValue", diastolic);
jsonObject.put("startDate", startDate);
jsonObject.put("endDate", endDate);
Log.v("json:", String.valueOf(this.jsonObject)); //prints json successfully
} catch (Exception e) {
Log.v(e.toString(), null);
}
}
public JSONObject getBloodPressure() throws JSONException {
return jsonObject; //trying to return json but its empty
}
}
Другой модуль:
public void getHealthData(Callback cb) {
try {
HealthData healthData = new HealthData();
JSONObject json = healthData.getBloodPressure(); ///calling it here
cb.invoke(null, json);
} catch (Exception e){
cb.invoke(e.toString(), null);
}
}
Ответ №1:
Я увидел ваш код и обнаружил, что вы раньше не вызывали BloodPressure()
метод getBloodPressure()
.
я думаю, что вам следует вызвать BloodPressure()
метод раньше getBloodPressure()
Итак, ваш другой модуль кодирует примерно так.
public void getHealthData(Callback cb) {
try{
HealthData healthData = new HealthData();
healthData.BloodPressure("type", "sys", "dia", "sdate", "edate") // you must call this method.
JSONObject json = healthData.getBloodPressure(); ///calling it here
cb.invoke(null, json);
} catch (Exception e) {
cb.invoke(e.toString(), null);
}
}
Обновить:
Я думаю, вам не следует создавать новый экземпляр метода HealthData
in getHealthData()
.
public void getHealthData(Callback cb) {
try{
//HealthData healthData = new HealthData(); // this line is wrong. So I removed this line.
JSONObject json = healthData.getBloodPressure(); ///calling it here
cb.invoke(null, json);
} catch (Exception e) {
cb.invoke(e.toString(), null);
}
}
Комментарии:
1. Проверьте мой обновленный вопрос. Я вызываю BloodPressure() в MainActivity. Я получаю все данные и «помещаю» в JSONObject. но когда я вызываю getBloodPressure(), он возвращает пустой {}
2. Пожалуйста, посмотрите ваш другой модуль. вы создаете новый экземпляр healthData, поэтому теперь он пуст. вы не должны создавать новые HealthData() в методе getHealthData().