PreferenceActivity在Android 2.1上正常工作,但不适用于4.1(填充)

时间:2012-09-26 02:34:33

标签: android padding preferenceactivity preference windowed

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

在Android 2.1(2.2和2.3中,尚未在ICS上测试过)中,屏幕显示如下: Eclair

但是在Jellybean上,它看起来像这样: 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创建代码。我不明白google是否希望我们使用Fragment API,如果最大版本的markethare没有该API,他们就不会将它添加到兼容性库中。

1 个答案:

答案 0 :(得分:1)

您的应用程序可以支持SharedPreferences的旧功能和新功能。您可以为旧的首选项提供Class,为新的首选项提供Class。它没有更多的代码。您可以将您的应用向后兼容,如下所示:

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

Intent i = new Intent (this, spc);
startActivityForResult (i, SHOW_PREFERENCES);