我正在写一个应用程序。它需要在旧的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创建代码。我不明白google是否希望我们使用Fragment API,如果最大版本的markethare没有该API,他们就不会将它添加到兼容性库中。
答案 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);