我目前正在将我的首选项迁移到带有标题的preferenceFragment 类。
我仍然想支持 Android 版本 < 3.0,所以我也必须使用旧的 xml 文件。(https://developer.android.com/guide/topics/ui/settings.html#BackCompatHeaders)
我现在的问题是我必须在运行时禁用某些首选项,设置摘要等。我现在如何在不编写代码 2 次的情况下执行此操作?
所以我的preferenceActivity看起来像这样:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String action = getIntent().getAction();
if (action != null) {
if (action.equals(ACTION_TEST)) {
addPreferencesFromResource(R.xml.preferences_push_sms);
// How do I call changePreferences()?
}
}
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
addPreferencesFromResource(R.xml.preference_headers_legacy);
}
}
@Override
public void onBuildHeaders(List<Header> target) {
loadHeadersFromResource(R.xml.preference_headers, target);
}
public static class SettingsFragmentTest extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
changePreferences();
}
public void changePreferences() {
CheckBoxPreference preference = (CheckBoxPreference) findPreference("pref_toggle");
preference.setChecked(condition()));
[...]
}
如何调用changePreferences()
Android 2.3?我无法从PreferenceActivity.onCreate()
.
如果我changePreferences()
设为静态,我将无法再使用 findPreference。仍然支持 Android 2.3 的最佳方式是什么PrefernceFragment
?我应该在哪里放置在运行时更改首选项的方法?