我有一个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);
}
不幸的是,它没有编译,因为"这个"不是一个适当的背景。
应该怎么做?
答案 0 :(得分:0)
这是因为setDefaultValues
的第一个参数是Context
。 PreferenceFragment
不是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);
}
}