共有設定を保存しないアプリがあります。私はcommit()
とapply()
の両方を使用してこれらの設定を保存しようとしましたが、アプリケーションが終了すると保存されません。私のアプリの画面を変更すると、変更は行われますが、アプリの再起動時に失われます。SharedPreferencesがアプリケーションに保存されていません。
アプリの起動時に呼び出される静的な方法ではなく、 "嗜好:CREATED 1つのLOCATION":
static {
prefs = PreferenceManager.getDefaultSharedPreferences(MainActivity.getContext());//MainActivity.getContext().getSharedPreferences("LocationTimer", Context.MODE_PRIVATE);
editor = prefs.edit();
if(!prefs.contains("totalLocations")) {
prefs.edit().putInt("totalLocations", 0).commit();
}
if(prefs.getInt("totalLocations", 0) == 0) {
for (int i = 1; i <= COUNT; i++) {
addItem(createLocationItem(i));
}
Log.i("PREFERENCES", "CREATED 1 LOCATION");
} else {
for (int i = 1; i <= prefs.getInt("totalLocations", 1); i++) {
addItem(new LocationItem(String.valueOf(i), "Location " + String.valueOf(i), prefs.getString(String.valueOf(i), "")));
}
Log.i("PREFERENCES", "LOADED LOCATION(S)");
}
Log.i("PREFERENCES", "LOADED " + String.valueOf(prefs.getInt("totalLocations", 1)) +" LOCATION(S)");
}
ログインメッセージが "LOADED LOCATION(S)設定" であるIアイテムがロードされている知っているように単に作成されていません。いずれかの項目が作成されたときにロードされた/と呼ばれる
方法:アプリが既にロードされている間
public static void addItem(LocationItem item) {
ITEMS.add(item);
ITEM_MAP.put(item.id, item);
saveStringToPreferences(item.id, item.details);
editor.putInt("totalLocations", ITEMS.size());
editor.apply();
Log.i("PREFERENCES", "CONTAINS " + String.valueOf(prefs.getInt("totalLocations", 1)) +" LOCATION(S)");
Log.i("ITEMS", "CONTAINS " + String.valueOf(ITEMS.size()) +" LOCATION(S)");
}
私はこれを言うことができますどのように環境設定を保存している上記のメッセージが1以外の他の数字が表示されています。 1つは、アプリの読み込み時に表示される量です。
ご協力いただきありがとうございます。ご不明な点がございましたら、投稿してください。できるだけ早く返信いたします。
まず、 'editor = prefs.edit();'を実行していますが、エディタを使用していません。第2に、 'commit'はブール値を返します。正常に保存された場合は' true'を返します。チェックしたいかもしれません! – alfasin
私は実際に2番目のコードブロックでエディタを使用します。あなたは正しいですが、私は最初のコードブロックでそれを使用しません。私はそれが真か偽を返すかどうかチェックします。助けてくれてありがとう! – TheAnonymous010
頭が上がると、正常にコミットされ、 'true'が返されます。アプリの再起動後はまだ保存されません。 – TheAnonymous010