現在、設定をヘッダー付きの 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
ですか? 実行時に設定を変更するメソッドをどこに置くべきですか?