如何在 PreferenceActivity 中创建 PreferenceScreen?

How to create a PreferenceScreen in a PreferenceActivity?

考虑以下 activity:

public class SettingsActivity extends PreferenceActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        PreferenceScreen screen =
                getPreferenceManager().createPreferenceScreen(this);
    }
}

Android Studio 显示调用 getPreferenceManager():

的警告

'getPreferenceManager()' is deprecated

This inspection reports where deprecated code is used in the specified inspection scope.

但是,它没有描述我应该采取什么纠正措施来避免警告。我找不到任何替代方法来获取对 PreferenceManager 的引用,而且我看不到其他方法来创建 PreferenceScreen.

我的目标是以编程方式填充 PreferenceActivity 首选项及其默认值,因为这些是在运行时生成的,不能包含在 xml/preferences.xml 中。

虽然 getPreferenceManager()SettingsActivity 中已弃用,但在 PreferenceFragment 中未弃用。因此,创建PreferenceScreen的正确方法如下:

public class SettingsActivity extends PreferenceActivity {

    public static class SettingsFragment extends PreferenceFragment {

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            PreferenceScreen screen =
                    getPreferenceManager().createPreferenceScreen(getActivity());
        }
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getFragmentManager()
                .beginTransaction()
                .replace(android.R.id.content, new SettingsFragment())
                .commit();
    }
}