首页 文章

如何在PreferenceActivity中创建PreferenceScreen?

提问于
浏览
0

请考虑以下活动:

public class SettingsActivity extends PreferenceActivity {

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

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

Android Studio会显示对 getPreferenceManager() 调用的警告:

不推荐使用'getPreferenceManager()'此检查报告在指定的检查范围中使用不推荐的代码的位置 .

但是,它没有描述我应该采取哪些纠正措施来避免警告 . 我找不到任何替代方法来获取对 PreferenceManager 的引用,我认为没有其他方法可以创建 PreferenceScreen .

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

1 回答

  • 2

    虽然在 SettingsActivity 中不推荐使用 getPreferenceManager() ,但 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();
        }
    }
    

相关问题