2013-03-06 18 views
5

Có một số tính năng trong ứng dụng của tôi yêu cầu phiên bản Android 4.2 trở lên. Vì vậy, trong hoạt động chính của mình, tôi sẽ cần phải kiểm tra các tính năng của hệ điều hành có sẵn và sửa đổi các mục ưu tiên (Bật/Tắt) được xác định trong PreferenceActivity của tôi.Làm thế nào để thay đổi trạng thái của một mục ưu tiên từ bên ngoài PreferenceActivity?

Các mã sau đây là không thể truy cập từ bên ngoài PreferenceActivity

ListPreference prefReport = (ListPreference)getPreferenceScreen().findPreference("pref_report"); 
prefDspProfile.setValue("0"); 

Vì vậy, câu hỏi của tôi là làm thế nào để sửa đổi các sở thích mục từ PreferenceActivity bên ngoài.

Trả lời

2

Nếu bạn sử dụng một PreferenceAcitivity ngầm bạn đang sử dụng một tệp SharedPreference. Vì vậy, ngoài sự ưu tiên của bạn, bạn có thể truy cập tệp SharedPrefence và thay đổi nó. Ngay sau đó, những thay đổi đó sẽ được phản ánh trên PreferenceActivity của bạn.

Bạn cần một bối cảnh để truy cập SharedPreference. Nhìn về phía trước ví dụ về phương thức onCreate của sự đơn giản khác.

CẬP NHẬT: Sử dụng phương pháp này bạn không thể bật/tắt các mục. Bạn có thể thay đổi giá trị của chúng hoặc loại bỏ chúng

@Override 
protected void onCreate(Bundle state){ 
    super.onCreate(state); 

    // Restore preferences 
    SharedPreferences settings = getPreferences(MODE); 
    // Make sure we're running on Honeycomb or higher to use ActionBar APIs 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { 
     //change your setting here 
     // We need an Editor object to make preference changes. 
     // All objects are from android.context.Context 
     SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
     SharedPreferences.Editor editor = settings.edit(); 
     editor.putBoolean("silentMode", mSilentMode); 

     // Commit the edits! 
     editor.commit(); 
    } 

} 

cách khác, và trên quan điểm của tôi tốt hơn và dễ dàng hơn là Cung cấp tài nguyên thay thế. Bạn có thể cung cấp nhiều tệp xml, xác định cài đặt ứng dụng của bạn, theo cấp API Android, bằng cách sử dụng vòng loại tài nguyên. Ví dụ: v2, v17.

res-v4 
    setting.xml 

res-v17 
    setting.xml -> This file can include specific Jelly Beans configs 
+0

về giải pháp đầu tiên của bạn, các mục không thể được bật/tắt nên tôi sẽ không biết liệu chúng có tương thích với phiên bản Android này hay không. Giải pháp thứ hai của bạn là câu trả lời của tôi. Vui lòng mã hóa Bruno Mateus –

+0

Bạn được chào đón. –

Các vấn đề liên quan