PreferenceFragment中的PreferenceManager.setDefaultValues

时间:2014-09-17 15:59:27

标签: android sharedpreferences

我有一个PreferenceFragment,我想根据XML文件设置默认值。这是我的onCreate方法:

 public class SettingsFragment extends PreferenceFragment {
 ...

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

   // Load the preferences from an XML resource
   addPreferencesFromResource(R.xml.preferences);

   //This is the faulty line
   PreferenceManager.setDefaultValues(this, R.xml.preferences, true);
 }

不幸的是,它没有编译,因为"这个"不是一个适当的背景。

应该怎么做?

3 个答案:

答案 0 :(得分:0)

这是因为setDefaultValues的第一个参数是ContextPreferenceFragment不是Context,请使用此功能。

PreferenceManager.setDefaultValues(getActivity(), R.xml.preferences, true);

答案 1 :(得分:0)

在片段中使用getActivity(),而不是使用上下文。

答案 2 :(得分:0)

您必须使用getActivity()Context内获得Fragment。请注意,只有在系统调用onActivityCreated(Bundle)后才能安全地使用此方法。 所以你可能想要使用以下内容:

 public class SettingsFragment extends PreferenceFragment {
   ...
   @Override
   public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
   }

   @Override
   public void onActivityCreated(Bundle savedInstanceState) {
     super.onActivityCreated(savedInstanceState);
     // Load the preferences from an XML resource
     addPreferencesFromResource(R.xml.preferences);

     //This was the faulty line
     PreferenceManager.setDefaultValues(getActivity(), R.xml.preferences, true);
   }
 }