2011-11-07 27 views

Trả lời

147
SharedPreferences mySPrefs =PreferenceManager.getDefaultSharedPreferences(this); 
SharedPreferences.Editor editor = mySPrefs.edit(); 
editor.remove(String key); 
editor.apply(); 

Trình chỉnh sửa ở đây là trình chỉnh sửa sharedPreferences.

+9

Một bổ sung nhỏ cho câu trả lời này. Từ tài liệu android: "Nếu bạn không quan tâm đến giá trị trả lại và bạn đang sử dụng điều này từ chuỗi chính của ứng dụng, hãy cân nhắc sử dụng hàm apply() thay thế." –

+1

@silwar, tại sao bạn đã chỉnh sửa lại() trở lại cam kết()?biết rằng tài liệu hướng dẫn sử dụng apply() trừ khi chúng ta muốn làm việc với giá trị trả về, và cả câu hỏi hoặc câu trả lời đều không phù hợp với trường hợp đó –

7
SharedPreferences.Editor.remove(key) 
commit(); 
10

Điều quan trọng cần lưu ý rằng, trừ khi bạn đang có kế hoạch làm một cái gì đó có giá trị trở lại của cam kết() cuộc gọi, hoàn toàn không có lý do cho việc sử dụng đồng bộ cam kết() gọi thay vì không đồng bộ áp dụng() gọi.

Hãy nhớ rằng nếu bạn đang gọi điều này từ chủ đề chính/UI, giao diện người dùng bị chặn cho đến khi commit() hoàn tất. Điều này có thể mất đến khoảng 100ms như apposed đến khoảng 5ms cho việc áp dụng. Điều đó có vẻ không nhiều, nhưng nếu được thực hiện liên tục trong suốt một ứng dụng, nó chắc chắn sẽ tăng lên.

Vì vậy, trừ khi bạn đang có kế hoạch làm một cái gì đó như thế này, hy vọng về một chủ đề riêng biệt:

editor.remove(String key); 
boolean success = editor.commit(); 
if (!success) { 
    // do something 
} 

Bạn nên thay vì được làm điều này:

editor.remove(String key); 
editor.apply(); 
0

Thông tin

Chỉ cần kiểm tra sharedpref lớp học được mở rộng đến Map đó là lý do tại sao có.210 phương pháp

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 
SharedPreferences.Editor editor = prefs.edit(); 
editor.remove(String key); 
editor.apply(); 

Đây editor là biên tập viên sharedPreferences.

2

Đây là cách tôi giải quyết vấn đề này.

Trước tiên tôi tạo ra một thể hiện của SharedPreference như

SharedPreferences mobilePreference; 

sau đó tôi sử dụng sharedPreference này như

mobilePreference = this.getSharedPreferences("in.bhartisoftwares.amit.allamitappsthree", Context.MODE_PRIVATE); 

Here "in.bhartisoftwares.amit.allamitappsthree" là tên gói của tôi và tôi đang sử dụng Ngữ cảnh.MODE_PRIVATE, vì tôi muốn thao tác tùy chọn chia sẻ này chỉ dành cho tên gói này.

Sau đó, tôi đang xóa các sharedPreference chọn (key của sharedPreference của tôi là mobileString) như sau:

mobilePreference.edit().remove("mobileString").commit(); 

Xem các mã như đầy đủ dưới đây:

SharedPreferences mobilePreference = this.getSharedPreferences("in.bhartisoftwares.amit.allamitappsthree", Context.MODE_PRIVATE); 
    mobilePreference.edit().remove("mobileString").commit(); 
2

Nó rất đơn giản:

private SharedPreferences sharedPreferences() { 
    return PreferenceManager.getDefaultSharedPreferences(mContext); 
} 

public void clearSharedPreferences() { 
    sharedPreferences() 
      .edit() 
      .remove(SOME_KEY_1) 
      .remove(SOME_KEY_2) 
      .remove(SOME_KEY_3) 
      .apply(); 
} 
Các vấn đề liên quan