마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

앱이 종료되어도 고유의 값을 저장하고 있어서 그 값으로 다시 시작될수 있는 방법 질문

+1 추천

질문내용 입니다. 

안드로이드 DB 를 사용하지 않고 현재 

public static void setStringArrayPref(Context context, String key, ArrayList<String> values) {
   SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
   SharedPreferences.Editor editor = prefs.edit();
   JSONArray a = new JSONArray();
   for (int i = 0; i < values.size(); i++) {
       a.put(values.get(i));
       Log.i(null,"ss"+a.put(values.get(i)));
   }
   if (!values.isEmpty()) {
       editor.putString(key, a.toString());
   } else {
       editor.putString(key, null);
   }
   editor.commit();
}
 
함수와 
 
 
public static ArrayList<String> getStringArrayPref(Context context, String key) {
   SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
   String json = prefs.getString(key, null);
   ArrayList<String> urls = new ArrayList<String>();
   if (json != null) {
       try {
           JSONArray a = new JSONArray(json);
           for (int i = 0; i < a.length(); i++) {
               String url = a.optString(i);
               urls.add(url);
               Log.e(null,"gg"+urls.get(i));
           }
       } catch (JSONException e) {
           e.printStackTrace();
       }
   }
   return urls;
}
 
함수를 이용하여 앱 데이터를 저장시키려고 하는데요 
 
list.setAdapter(new ArrayAdapter<String>(this,R.layout.list_view, getStringArrayPref(m_context, a)));
 
이런식으로 리스트뷰에 띄워주려고 합니다.
 
안되는 부분은 
 
setStringArrayPref(m_context,a,arrayList); 해당 저장함수로 
저장을 해놓았는데도 불구하고 
 
값을 저장시키고 앱을 완전 종료 했다가 다시 시작하면 
 
그 값들에 null 이 들어가 있습니다 
 
어찌 해야 할까요 

 

Eve[d] (230 포인트) 님이 2014년 1월 13일 질문

1개의 답변

0 추천
일단 저장하는 데이터가 올바르게 저장되었는지 먼저 확인하세요

get 했을 때 text 값을 가져다가 http://www.jsonlint.com 에 붙여 넣어 validate 하면 답이 나오겠죠
aucd29 (218,390 포인트) 님이 2014년 1월 14일 답변
...