Androidのライブ壁紙を作成しました。ユーザーが携帯電話から画像を選択して背景画像として適用しようとしていますが、目的を開始するアクティビティを開始すると画像を選ぶと、私の共有設定が適切に保存されていないようです。Androidの共有設定が保存されない
以下は、ユーザが設定ボタンを押したときに開始するアクティビティのonCreateメソッドと、デバイス上の画像のパスを取得するonActivityResult(すべて動作するように思われる)です。環境設定をコミットした後のprintlnは何も印刷しません。 documentationから
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
photoPickerIntent.setType("image/*");
startActivityForResult(photoPickerIntent, SELECT_PICTURE);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
if (requestCode == SELECT_PICTURE) {
Uri selectedImageUri = data.getData();
selectedImagePath = getPath(selectedImageUri);
preferences = getApplicationContext().getSharedPreferences(PREFERENCES_NAME, 0);
preferences.edit().putString(SETTINGS_BACKGROUND_IMAGE, "okok");
preferences.edit().commit();
System.out.println("Image" + preferences.getString(SETTINGS_BACKGROUND_IMAGE, ""));
}
}
finish();
}
これと元のコードの間に論理の違いが見えないのは誰ですか? – josephus
preferences.edit()を呼び出すと、jOEが文字列を入れていたEditorインスタンスが取得されますが、その後、そのインスタンスは使用されなくなりました(したがって、失われ、おそらくガベージコレクションされました)。その後、jOEはpreferences.edit()を再度呼び出し、初期設定を含む別のEditorインスタンスを取得しました。これは基本的に最初の設定を保存しただけです(共有設定を更新することはありません) – zrgiu
zrgui、ありがとうございました!あなたの提案は完璧に機能しました! – jOE