お世話になります。
前提・実現したいこと
アプリを終了後、シェアードプレファレンスが書き換わるのを阻止したいです。
下記コードを実行して、DaysReportのTheTimeOfStartというキーが示す文字列(最初は"")の次に、変数hm内の半角数字と改行文字を付けて保存しました。
java
1 private void SetData(String sagyoumei,int hm,int sagyousuu) 2 { 3 SharedPreferences sharedPreferences=getSharedPreferences("DaysReport",MODE_PRIVATE); 4 SharedPreferences.Editor editor=sharedPreferences.edit(); 5 String oldData=sharedPreferences.getString("TheTimeOfStart",""); 6 7 editor.putString("TheTimeOfStart",oldData+hm+"\n"); 8 9 editor.apply(); 10 }
しかし、その後アプリを終了し、再びアプリを起動、onCreate関数内で、
java
1 @Override 2 protected void onCreate(Bundle savedInstanceState) { 3 super.onCreate(savedInstanceState); 4 setContentView(R.layout.activity_main); 5 SharedPreferences sharedPreferences=getSharedPreferences("DaysReport",MODE_PRIVATE); 6 String oldData=sharedPreferences.getString( "TheTimeOfStart",""); 7}
を行い、上記のoldData内を参照すると、保存した正しい文字列の次に、半角スペースが4つ付いていました。
どうすれば、この現象を阻止できますか。
試したこと
シェアードプレファレンスに保存後、アプリを終了させる前に、onPause,onStopでは、値が書き換わっていないことを確認しました。
また、上記改行文字を/に差し替えた所、書き換えが起きないことを確認しました。
エスケープシークエンス関連だとは思うのですが、なぜそうなるのか詳しく分かりません。
補足情報(FW/ツールのバージョンなど)
Android studio 3.1.1使用
宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/30 08:26