0

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

4

0 に答える 0