设备重启后不检索JsonArray, JsonObject



我已将JsonArrayJsonObject设置为应用程序类,以使此对象全局。在设备重新启动之前检索存储在json数组中的值。重启后json数组显示空白方括号'[]'。它显示了json数组的值。但重启后就没有了。有什么建议或指导,以便我能做到这一点。

这是Application

public class MyApplicationClass extends Application{
public static final String PREFS_NAME = "PrefsFile";
private JSONArray jsonArray=new JSONArray();
private jsonObject jsonObj=new jsonObject();
public JSONArray getjsonArray() {
    return jsonArray;
}
public void setjsonArray(JSONArray jsonArray) {
    this.jsonArray = jsonArray;
}
public jsonObject getjsonObj() {
    return jsonObj;
}
public void setjjsonObj(jsonObject jsonObj) {
    this.jsonObj = jsonObj;
}

}

这里我设置了JsonArray &JsonObject

// jsonObj, jsonArray declare as class variables 
                       //getting global JsonArray object
               final MyApplicationClass AppObj=(MyApplicationClass )getApplicationContext();
               final JSONArray jsonArray=AppObj.getJsonAlarmArray();
              // getting name of sharedPreferences file & mode
              sharedPrefs=getSharedPreferences(MyApplicationClass.PREFS_NAME, Context.MODE_PRIVATE);
              final JSONObject jsonObj =AppObj.getJsonObj();
                 btn.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            if(some condition)
                {
                    jsonObj.put("value1", 1234);
                    jsonObj.put("value2", 234);
                    jsonObj.put("value3", 3);
                }
                else if(some condition))
                {
                    jsonObj.put("value1", 12314);
                    jsonObj.put("value2", 2314);
                    jsonObj.put("value3", 31);
                }
                jsonArray.put(jsonObj);
                AppObj.setJsonAlarmArray(jsonArray);
            editor= sharedPrefs.edit();
                editor.putString("key", jsonArray.toString());
                System.out.println(jsonArray.toString());
                editor.commit();
        }
    });

通过这种方式我正在检索json数组

btn2.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub

            sharedPrefs=getSharedPreferences(MyApplicationClass.PREFS_NAME, 0);
            try {
                JSONArray jsonArray=((MyApplicationClass)getApplication()).getJsonAlarmArray();
                System.out.println(jsonArray.toString());
                Toast.makeText(TypesActivity.this, ""+jsonArray, Toast.LENGTH_LONG).show();
            } catch (Exception e) {
                e.printStackTrace();
            }

        }
    });

您忘记从SharedPreferences读取json:

btn2.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub

        sharedPrefs=getSharedPreferences(MyApplicationClass.PREFS_NAME, 0);
        String jsonArrayString = sharedPrefs.getString("key", null);
        try {
            if (jsonArrayString != null) {
                JSONArray jsonArray= new JSONArray(jsonArrayString) 
                System.out.println(jsonArray.toString());
                Toast.makeText(TypesActivity.this, ""+jsonArray, Toast.LENGTH_LONG).show();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
});

将Json字符串保存在文件中,并在每次更新Json对象时更新该文件。再次加载Json时,可以从

文件加载

最新更新