【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;
}