Я пишу приложение. Он должен работать на старых ОС Android, чтобы быть полезным. Я написал экран настроек, используя PreferencesActivity, который заполняется файлом options.xml, который содержит PreferenceScreen. У него нет подменю для предпочтений (поэтому PreferenceFragment не дает никаких реальных преимуществ).PreferenceActivity работает правильно на Android 2.1, но не 4.1 (дополняется)
В Android 2.1 (2.2 и 2.3, которые не тестируется на ICS пока) на экране отображается правильно как и в пейзаже:
Но на Jellybean, это выглядит следующим образом:
Это выглядит ужасно. Я не имею ничего определенного как макет, просто стандартные addPreferencesFromResource(). Кто-нибудь знает, в чем причина этого? Или решение?
Мой OnCreate выглядит следующим образом:
protected void onCreate(Bundle savedInstanceState) { //
super.onCreate(savedInstanceState);
Log.i(TAG, "Options Activity Loaded.");
setTitle(getString(R.string.optionsTitle));
addPreferencesFromResource(R.xml.options);
setupListeners();
}
Все остальное просто делает объекты предпочтений и присваивает методы, чтобы сделать вещи, когда они получают щелкнули. Я не хочу создавать код для PreferenceFragment и PreferenceActivity. Я не понимаю, как Google ожидает, что мы будем использовать API-интерфейсы Fragment, если у самой большой версии markethare нет этого API, и они не добавят его в lib.
Я чувствую, что экраны предпочтений ICS/JB имеют это дополнение. Я не уверен, что есть способ удалить его, но я не принимаю окончательный ответ (вот почему я просто прокомментировал.) – Jwc24678
Я просто выброшу туда, что ['addPreferencesFromResource()'] (http://developer.android.com/reference/android/preference/PreferenceActivity.html#addPreferencesFromResource(int)) устарел. Вероятно, использование поддерживаемых методов (подробная информация на этой странице документации) на 4.0+ даст вам правильные результаты. – Eric
В надежде избежать этих ... Но, возможно, придется сдаться и сделать это в любом случае. Я не понимаю, почему они не будут полностью совместимы. Нет никаких оснований для заполнения. – Mgamerz