Jeśli używasz PreferenceAcitivity niejawnie, używasz pliku SharedPreference. Tak więc, poza ustawieniem preferencji użytkownika, można uzyskać dostęp do pliku SharedPrefence i go zmienić. Wkrótce te zmiany zostaną odzwierciedlone na Twojej PreferenceActivity.
Potrzebujesz Kontekst, aby uzyskać dostęp do SharedPreference. Czekamy na przykład na onCreate metoda innej simpleAcitivity.
UPDATE: Stosując to podejście nie jesteś w stanie włączyć/wyłączyć przedmiotów. Można zmienić ich wartości lub usunąć je
@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();
}
}
inny sposób, a on moim zdaniem lepiej i łatwiej jest zapewnienie alternatywnych zasób. Możesz udostępnić wiele plików xml, które definiują ustawienia Twojej aplikacji zgodnie z poziomem interfejsu API Androida: przy użyciu kwalifikatora zasobów. Na przykład: v2, v17.
res-v4
setting.xml
res-v17
setting.xml -> This file can include specific Jelly Beans configs
dotyczące Twojego pierwszego rozwiązania, elementy nie mogą być włączone/wyłączone, więc nie wiem, czy są one zgodne z tą wersją Androida, czy nie. Twoje drugie rozwiązanie jest moją odpowiedzią. Szczęśliwe kodowanie Bruno Mateus –
Nie ma za co. –