我在寫應用程序。它需要運行在舊的Android操作系統上纔能有用。我使用PreferencesActivity編寫了首選項屏幕,該PreferencesActivity使用包含PreferenceScreen的options.xml文件填充。它沒有偏好的子菜單(所以PreferenceFragment沒有提供真正的好處)。PreferenceActivity在Android 2.1上正常工作,但不是4.1(填充)
在Android 2.1系統中的風景(2.2和2.3,也沒有對ICS測試過),屏幕顯示正常,像這樣:
但在傑利貝恩,它看起來像這樣:
它看起來很可怕。我沒有定義任何佈局,只是標準的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製作代碼。我不明白谷歌如何期望我們使用Fragment APIs,如果最大版本marketshare沒有這個API,他們不會將它添加到兼容性庫。
我覺得ICS/JB首選項屏幕具有該填充。我不確定是否有辦法刪除它,但我沒有做出明確的答案(這就是爲什麼我剛剛評論。) – Jwc24678
我只是拋出那裏,[addPreferencesFromResource()'](http:///developer.android.com/reference/android/preference/PreferenceActivity.html#addPreferencesFromResource(int))已棄用。可能在4.0+上使用仍然支持的方法(在該文檔頁面中詳細說明)將會產生適當的結果。 – Eric
希望避免這些......但可能必須投降並且無論如何都要這樣做。我不明白爲什麼他們不會完全兼容。沒有理由填充。 – Mgamerz