【Androidアプリケーションの設定画面を作ろう】PreferenceActivityのヘッダーリストを更新する
PreferenceActivityは設定画面を作るためのActivityです。
Android3.0(API レベル 11)を境に前と後で実装方針が大きく変化しています。
- Android3.0以前はPreferenceActivityを単体で使い設定画面を作成します。
- Android3.0以後は「ActivityとPreferenceFragment」や「PreferenceActivityとPreferenceFragment」を組み合わせて作成します。
ヘッダーリストの更新をする
void invalidateHeaders()を使うことでヘッダーリストの更新を要求することができます。onBuildHeadersが再度呼ばれます。その後、PreferenceActivity.Header onGetNewHeader()が呼ばれます。
onGetNewHeaderをオーバーライドすることで初期表示の設定画面を選択することができます。
private boolean isPatternA = true; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Button footerView = new Button(this); footerView.setText("Footer"); footerView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { isPatternA = !isPatternA; invalidateHeaders(); } }); setListFooter(footerView); } @Override public void onBuildHeaders(List<Header> target) { if (isPatternA) { loadHeadersFromResource(R.xml.pref_headers_pattern_a, target); } else { loadHeadersFromResource(R.xml.pref_headers_pattern_b, target); } } @Override public Header onGetNewHeader() { Header header = new Header(); header.fragment = Prefs1Fragment.class.getName(); header.breadCrumbTitle = "onGetNewHeader"; return header; }