前提・実現したいこと
ListViewの値を配列で取得してPreferenesを用いて一時保存を実現しています。
JSONArrayを用いて、複数の文字列を一つにまとめて、loadTaskNameメソッドで受け取った際に分割して配列task_names_rに格納しようとしたところnullが入力されていました。
発生している問題・エラーメッセージ
task_names[i]にnullが入力されてしまいます。。
該当のソースコード
Java
1 //リストの変更した値を保持する 2 private void saveList (Context context,String task_name) { 3 //アプリ標準のPreferencesを取得する 4 SharedPreferences sp =PreferenceManager.getDefaultSharedPreferences(context); 5 //Preferencesに書きこむためのEditorクラスを取得する 6 SharedPreferences.Editor editor=sp.edit(); 7 //task_names配列を作成し、その中にListViewの中身を格納 8 String[] task_names=new String[100]; 9 task_names[LIST_COUNT]=task_name; 10 LIST_COUNT++; 11 //JSONArrayの中にひとまとまりで保存する 12 jsonarray=new JSONArray(); 13 for(int i=0;i<LIST_COUNT;i++){ 14 //listで保存する 15 jsonarray.put(task_names[i]); 16 Log.d("main-debug","task_names["+i+"]:"+task_names[i]+"です。"); 17 } 18 //一気に保存する 19 //putXxxx("","")にて書き込むデータを登録する 20 editor.putString("TASKNAME",jsonarray.toString()); 21 //書き込みを確定する 22 editor.apply(); 23 } 24//リストの変更した値を読み込む 25//作業名を読み込む 26private void loadTaskName(Context context) throws JSONException { 27 //アプリ標準のPreferencesを取得する 28 SharedPreferences sp=PreferenceManager.getDefaultSharedPreferences(context); 29 //作業名を返す。なければ nullを返す 30 String task_names_r=sp.getString("TASKNAME",null); 31 Log.d("main-debug","task_names_r:"+task_names_r+"です。"); 32 33 if(task_names_r!=null){ 34 jsonarray=new JSONArray(); 35 jsonarray.put(task_names_r); 36 //読み込んだ作業名配列 37 for(int i=0;i<jsonarray.length()-1;i++){ 38 Rtaskers[i]=jsonarray.getString(i); 39 //ListViewに追加するメソッド 40 addlist(Rtaskers[i]); 41 } 42 43 } 44 }
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/27 14:54