5

我正在写一个应用程序。它需要在旧的 android 操作系统上运行才能有用。我使用 PreferencesActivity 编写了首选项屏幕,该 PreferencesActivity 填充了包含 PreferenceScreen 的 options.xml 文件。它没有首选项子菜单(因此 PreferenceFragment 没有提供真正的好处)。

在 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();
}

其他一切都只是制作 Preference 对象并在它们被点击时分配方法来做事。我不想为 PreferenceFragment 和 PreferenceActivity 编写代码。如果最大版本的市场份额没有该 API 并且他们不会将其添加到兼容性库中,我不明白谷歌希望我们如何使用 Fragment API。

4

1 回答 1

1

您的应用程序可以同时支持 SharedPreferences 的旧功能和新功能。您可以为旧偏好提供一个类,为新偏好提供一个类。它没有更多的代码。您可以像这样使您的应用向后兼容:

Class spc = Build.VERSION_SDK_INT < Build.VERSION_CODES.HONEYCOMB ? 
    oldPreferenceActivity.class : newFragmentPreferenceActivity.class;

Intent i = new Intent (this, spc);
startActivityForResult (i, SHOW_PREFERENCES); 
于 2012-09-26T11:27:29.320 回答