4以降のすべてのAndroidAPIにSharedPreferencesを適用するために次のコードを使用したいと思います。
/**
* The apply method was introduced
* in Android API level 9.<br> Calling it causes a safe asynchronous write
* of the SharedPreferences.Editor object to be performed. Because
* it is asynchronous, it is the preferred technique for saving SharedPreferences.<br>
* So we should use appropriate method if we doesn`t need confirmation of success.
* In this case we should use old commit method.
*/
@TargetApi(9)
public static void applySharedPreferences(SharedPreferences.Editor editor){
if (Build.VERSION.SDK_INT < 9){
editor.commit();
} else {
editor.apply();
}
}
プロジェクトターゲットAPIは10です(プロジェクトプロパティで設定)。API 8で正常に動作しますが、API 4で実行しようとすると、次のメッセージでクラッシュします。
11-18 20:21:45.782: E/dalvikvm(323): Could not find method android.content.SharedPreferences$Editor.apply, referenced from method my.package.utils.Utils.applySharedPreferences
通常はデバイスにインストールされますが、起動中にクラッシュします。このメソッド(適用)がこのAPIで使用されていないのに、なぜ発生するのですか?
ありがとう