つれづれなるままに"

Androidの設定画面(PreferenceFragmentCompat)

 最初はPreferenceFragmentを使えばできそうかなと思ったんですが、

API Level 28からdeprecatedになるようです。

https://developer.android.com/reference/android/preference/PreferenceFragment.html

 

なので、代わりのPreferenceFragmentCompatで実装してみます。

https://developer.android.com/reference/android/support/v7/preference/PreferenceFragmentCompat

 

手順1.Support Libraryのセットアップ

PreferenceFragmentCompatを使うためにはSupport Libraryをセットアップしなければならないので、app/build.gradleのdependenciesブロックに

implementation 'com.android.support:preference-v7:28.0.0'

のように記述してあげる必要があります。

https://developer.android.com/topic/libraries/support-library/packages

 

手順2.設定画面のxml用意

res直下にxmlフォルダを作成し、設定画面のXMLを追加します

f:id:ossan54:20190325145547j:plain

手順3.設定画面のxml読み込み

PreferenceFragmentCompatを継承したクラスはonCreatePreferencesをoverrideする必要があります。この中でXMLからpreferenceをロードします。

@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
// Load the preferences from an XML resource
setPreferencesFromResource(R.xml.preference, rootKey);
}

 手順4.設定画面呼び出し

あとは設定画面を呼び出すトリガとなるイベントのイベントハンドラで、設定画面の表示処理を記述する。

public void onClickSetting(View view) {
FragmentTransaction transaction = fragmentManager.beginTransaction();
Fragment fragment = new SettingFragment();
transaction.replace(R.id.rootView, fragment);
transaction.addToBackStack(null);
transaction.commit();
}

 

 これで設定画面が表示されました。