Piszę aplikację. Musi działać na starych systemach Android, aby były przydatne. Napisałem ekran preferencji za pomocą PreferencesActivity, który wypełnia plik options.xml, który zawiera PreferenceScreen. Nie ma podmenu dla preferencji (więc PreferenceFragment nie zapewnia żadnych rzeczywistych korzyści).PreferenceActivity działa poprawnie na systemie Android 2.1, ale nie 4.1 (wyściełane)
W Android 2.1 (2.2 i 2.3, nie zostały jeszcze przetestowane na ICS) na ekranie wyświetla się prawidłowo, tak jak w krajobrazie:
Ale Jellybean, wygląda to tak:
Wygląda okropnie. Nie mam nic zdefiniowanego jako layout, tylko standard addPreferencesFromResource(). Czy ktoś wie, jaka może być tego przyczyna? Lub rozwiązanie?
My onCreate wygląda następująco:
protected void onCreate(Bundle savedInstanceState) { //
super.onCreate(savedInstanceState);
Log.i(TAG, "Options Activity Loaded.");
setTitle(getString(R.string.optionsTitle));
addPreferencesFromResource(R.xml.options);
setupListeners();
}
Wszystko inne po prostu sprawia, że przedmioty preferencji i przypisuje metod robić rzeczy, kiedy są kliknięciu. Nie chcę tworzyć kodu zarówno dla PreferenceFragment, jak i PreferenceActivity. Nie rozumiem, w jaki sposób Google oczekuje od nas używania fragmentów API Fragmentów, jeśli największa wersja marketshare nie ma tego API i nie doda go do biblioteki zgodności.
Czuję ekranach uprzywilejowanych ICS/JB że mają wyściółki. Nie jestem naprawdę pewien, istnieje sposób, aby go usunąć, ale nie jestem podejmowania ostatecznej odpowiedzi (dlatego właśnie skomentowałem.) – Jwc24678
Po prostu wyrzucę tam, że [addPreferencesFromResource() '] (http://developer.android.com/reference/android/preference/PreferenceActivity.html#addPreferencesFromResource)) jest przestarzałe. Prawdopodobnie używanie nadal obsługiwanych metod (opisanych na tej stronie) na 4.0+ przyniesie Ci właściwe wyniki. – Eric
Mając nadzieję na ominięcie tych ... Ale może i tak musielibyśmy się poddać i zrobić to. Nie rozumiem, dlaczego nie byliby w pełni zgodni. Nie ma powodu do wyściełania. – Mgamerz