SharedPreferences设备重启后不检索JsonArray,JsonObject

时间:2013-05-10 10:19:19

标签: android json arrays

我已将JsonArrayJsonObject设置为Application类,以使此对象成为全局对象。 存储在json数组中的值在设备重启之前检索。重启后json数组显示空白squre'[]'括号。 with reboot它显示了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();
            }


        }
    });

2 个答案:

答案 0 :(得分:1)

你忘了阅读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();
        }


    }
});

答案 1 :(得分:0)

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

加载它