2017-05-06 53 views
0

考虑以下活动:如何在PreferenceActivity中创建PreferenceScreen?

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中。

+0

设置不使用PreferenceFragment来表示PreferenceScreen。你可以按照[教程](https://developer.android.com/guide/topics/ui/settings.html) –

回答

2

尽管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(); 
    } 
} 
相关问题