Androidの設定で環境設定の種類が変更された場合の対処方法は?たとえば、Boolean
がListPreference
に変更された場合Androidの共有設定の種類の移行
Googleでは、環境設定のマイグレーションについてはまったく考えていませんか?
唯一の賢明な方法は、バージョンを設定し、特定のバージョンで変更された削除の環境設定をマークするようです。
Androidの設定で環境設定の種類が変更された場合の対処方法は?たとえば、Boolean
がListPreference
に変更された場合Androidの共有設定の種類の移行
Googleでは、環境設定のマイグレーションについてはまったく考えていませんか?
唯一の賢明な方法は、バージョンを設定し、特定のバージョンで変更された削除の環境設定をマークするようです。
ClassCastException
例外削除の「古い」キーの場合は、新しいデータ型でキーを読み取り、同じ名前で新しいタイプの新しいキーを作成してみます。
SharedPreferences prefs;
String key = "key";
prefs = PreferenceManager.getDefaultSharedPreferences(this);
if (prefs.contains(key)) {
// key exists, so tetermine it's type
try {
prefs.edit().get<old_type_name>(key, <default_old_type_value>);
} catch (Exceprtion e) {
if (e instanceOf ClassCastException) {
prefs.edit().remove(key).apply();
}
}
}
// we are here if no key exists or key removed
prefs.edit().put<new_type_name>(key, <new_type_value>).apply();
と最初のアプリの起動時に一度だけif (prefs.contains(key)) ...
をチェックしますか、必要であればこのような何か。
ありがとうございます:-)私はすでに、可能な設定の変更/整合性の問題としてClassCastExceptionの重要性に気付きました。古いキーを削除してデフォルト値で再作成することも私の選択でした:-) – CeDeROM
私は生のSharedPreferences上で動作し、PreferenceFragmentを必要としない何かをした:
これは純粋に文字列をXMLリソースとコードの変更なしに基づいて、私の設定の移行の素敵な方法を提供し、ユーザーは
:-)頻繁にアプリケーションを更新しなかった場合も、それがステップにより、以下のすべてのバージョンを段階を移行する必要があります最近の変更のユーザーレビューで最近の移行をマークすることもお勧めします..
ただ好みの名前を変更しますか?それが "type_pref"だった場合は、新しい "type_pref1"を呼び出して前の値を無視してください –