-->

PreferenceActivity正常运行在Android 2.1,而不是4.1(填充)(Pref

2019-09-23 00:20发布

我正在写的应用程序。 它需要对旧的Android操作系统的运行是有益的。 我已经使用与包含PreferenceScreen一个options.xml文件填充一个PreferencesActivity书面偏好屏幕。 它没有子菜单的喜好(所以PreferenceFragment没有提供真正的好处)。

在的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。 我不明白谷歌如何希望我们使用的API片段如果最大版本的市场份额不具有API,他们不会把它添加到兼容性库。

Answer 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); 


文章来源: PreferenceActivity works properly on Android 2.1, but not 4.1 (padded)