Tôi đã tạo hình nền động trên Android và tôi đang cố gắng cho phép người dùng chọn hình ảnh từ điện thoại của họ và áp dụng nó làm hình nền, nhưng khi tôi khởi chạy hoạt động bắt đầu ý định chọn hình ảnh, tùy chọn được chia sẻ của tôi dường như không lưu đúng cách.Tùy chọn chia sẻ trên Android không lưu
Dưới đây là phương pháp onCreate của hoạt động tôi bắt đầu khi người dùng nhấn nút tùy chọn và onActivityResult nhận đường dẫn của hình ảnh trên thiết bị (tất cả những gì dường như hoạt động). Các println sau khi tôi cam kết các ưu đãi in ra không có gì.
@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();
}
Tôi có phải là người duy nhất không thể thấy sự khác biệt trong logic giữa mã này và mã gốc không? – josephus
khi bạn gọi preferences.edit(), bạn nhận được một cá thể Editor, trên đó jOE đã đặt một chuỗi, nhưng sau đó, cá thể đó không còn được sử dụng (do đó bị mất và có thể thu gom rác). Sau đó, jOE gọi là preferences.edit() một lần nữa, nhận một cá thể Editor khác có chứa các thiết lập ban đầu, mà anh ta vừa lưu tại chỗ. Điều này về cơ bản chỉ cần lưu các thiết lập ban đầu (không làm gì để cập nhật sở thích chia sẻ của mình) – zrgiu
zrgui, cảm ơn bạn rất nhiều vì đã giúp đỡ của bạn! Đề xuất của bạn đã hoạt động hoàn hảo! – jOE