我已将JsonArray
和JsonObject
设置为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();
}
}
});
答案 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时,可以从文件
加载它