file Preference là không storead trong dự án /res/xml/defaults.xml
Họ được lưu trữ trên thiết bị trong thư mục ứng dụng một cái gì đó của bạn như
/data/data/com.your.pkg/default.prefs
Cố gắng không chỉ định tên tập tin, như bạn sẽ có một số vấn đề với các tệp tùy chọn, như OP này có trong câu hỏi này: How do I get preferences to work in Android?
SharedPreferences preferences = PreferenceManager
.getDefaultSharedPreferences(context);
Sau đó, bạn có thể sẽ phải truy vấn
preferences.getString('weightPref', null);
Nhiều ứng dụng có thể cung cấp một cách để nắm bắt sở thích của người dùng trên các thiết lập của một ứng dụng cụ thể hoặc một hoạt động. Để hỗ trợ điều này, Android cung cấp một bộ API đơn giản.
Tùy chọn thường là cặp giá trị tên. Chúng có thể được lưu trữ dưới dạng "Tùy chọn chia sẻ" trên nhiều hoạt động khác nhau trong một ứng dụng (lưu ý hiện tại nó không thể được chia sẻ trên các quy trình). Hoặc nó có thể là cái gì đó cần được lưu trữ cụ thể cho một hoạt động.
Tùy chọn được chia sẻ: Tùy chọn chia sẻ có thể được sử dụng bởi tất cả các thành phần (hoạt động, dịch vụ, vv).
Tùy chọn được xử lý hoạt động: Các tùy chọn này chỉ có thể được sử dụng trong hoạt động và không thể được sử dụng bởi các thành phần khác của ứng dụng.
Preferences chung:
Các sở thích chia sẻ được quản lý với sự giúp đỡ của getSharedPreferences
phương pháp của lớp Context
. Các sở thích được lưu trữ trong một tập tin mặc định (1) hoặc bạn có thể chỉ định một tên tập tin (2) được sử dụng để tham khảo các sở thích.
(1) Đây là cách bạn có được dụ khi bạn chỉ định tên tập tin
public static final String PREF_FILE_NAME = "PrefFile";
SharedPreferences preferences = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE);
MODE_PRIVATE
là chế độ hoạt động cho các sở thích. Đây là chế độ mặc định và có nghĩa là tệp được tạo sẽ chỉ được truy cập bởi ứng dụng gọi điện. Hai chế độ khác được hỗ trợ là MODE_WORLD_READABLE
và MODE_WORLD_WRITEABLE
.Trong MODE_WORLD_READABLE
ứng dụng khác có thể đọc tệp đã tạo nhưng không thể sửa đổi nó. Trong trường hợp MODE_WORLD_WRITEABLE
các ứng dụng khác cũng có quyền ghi cho tệp được tạo.
(2) Cách đề nghị là sử dụng bởi chế độ mặc định, mà không chỉ định tên tập tin
SharedPreferences preferences = PreferencesManager.getDefaultSharedPreferences(context);
Cuối cùng, một khi bạn có các trường hợp sở thích, đây là cách bạn có thể lấy lưu trữ đánh giá cao những ưu đãi:
int storedPreference = preferences.getInt("storedInt", 0);
Để cửa hàng đánh giá cao trong file thích SharedPreference.Editor
đối tượng đã được sử dụng. Editor
là giao diện lồng nhau của lớp SharedPreference
.
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();
Editor cũng hỗ trợ các phương pháp như remove()
và clear()
để xóa các giá trị ưu tiên từ tập tin.
Preferences
Hoạt động:
Các sở thích chia sẻ có thể được sử dụng bởi các thành phần ứng dụng khác. Nhưng nếu bạn không cần chia sẻ các sở thích với các thành phần khác và muốn có các hoạt động riêng tư. Bạn có thể làm điều đó với sự trợ giúp của phương thức hoạt động của getPreferences()
. Phương thức getPreference
sử dụng phương thức getSharedPreferences()
với tên của lớp hoạt động cho tên tệp tùy chọn.
Tiếp theo là mã để có được ưu đãi về
SharedPreferences preferences = getPreferences(MODE_PRIVATE);
int storedPreference = preferences.getInt("storedInt", 0);
Mã để lưu trữ các giá trị cũng tương tự như trong trường hợp sở thích chia sẻ.
SharedPreferences preferences = getPreference(MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();
Bạn cũng có thể sử dụng các phương pháp khác như lưu trữ trạng thái hoạt động trong cơ sở dữ liệu. Lưu ý Android cũng chứa một gói có tên là android.preference
. Gói này định nghĩa các lớp để triển khai UI tùy chọn ứng dụng.
Để xem một số ví dụ khác, hãy kiểm tra bài đăng trên Data Storage của Android trên trang web dành cho nhà phát triển.
Hãy [không sử dụng "ở đây" hoặc "bấm vào đây" như liên kết văn bản] (http://www.w3.org/QA/Tips/noClickHere.html). Cảm ơn! –
Điều tôi muốn làm là để một bên xác định tệp xml tùy chọn của người dùng với các giá trị mặc định trong res/xml/preferences.xml, như bạn đã đề cập tôi có thể nhận được các tùy chọn này: PreferenceManager.getDefaultSharedPreferences (context); Ở phía bên kia, tôi muốn định nghĩa trong một tệp khác tùy chọn để định cấu hình ứng dụng của mình (người dùng không thể quản lý tùy chọn cấu hình này, chỉ có mã ứng dụng của tôi mới đọc được). Câu hỏi của tôi là nơi tôi có thể chỉ định các giá trị mặc định cho các tùy chọn cấu hình này, nếu tôi đã có một tệp cho các tùy chọn người dùng (res/xml/preferences.xml). – whynot
Joachim làm cho một điểm tốt. Đã sửa. – MatrixFrog