Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在PreferenceFragment中加载首选项默认值?_Android_Xml_Android Fragments_Preferences - Fatal编程技术网

Android 如何在PreferenceFragment中加载首选项默认值?

Android 如何在PreferenceFragment中加载首选项默认值?,android,xml,android-fragments,preferences,Android,Xml,Android Fragments,Preferences,我的XML中有两个(第一个和最后一个)开关首选项默认为“true”,其余为“false” XML 在这个类的OnCreate中,有我的MainActivity和上面显示的片段(上下文是片段的OnCreate中的getActivity()),但没有一个对我有效 即使默认值为false,消防开关也会随机显示为打开状态。一个类有太多的开关可能会有问题吗 如何解决问题?尝试在GeneralReferenceFragment的onCreate方法中添加这些行 SwitchPreference curren

我的XML中有两个(第一个和最后一个)开关首选项默认为“true”,其余为“false”

XML 在这个类的OnCreate中,有我的MainActivity和上面显示的片段(上下文是片段的OnCreate中的getActivity()),但没有一个对我有效

即使默认值为false,消防开关也会随机显示为打开状态。一个类有太多的开关可能会有问题吗


如何解决问题?

尝试在GeneralReferenceFragment的onCreate方法中添加这些行

SwitchPreference currentRadarPref = (SwitchPreference) getPreferenceManager().findPreference("current_radar");
currentRadarPref.setChecked(getPreferenceManager().getSharedPreferences().getBoolean("current_radar", true));

SwitchPreference twitterPref = (SwitchPreference) getPreferenceManager().findPreference("twitter");
currentRadarPref.setChecked(getPreferenceManager().getSharedPreferences().getBoolean("twitter", true));
如果上述代码不适用于您,请执行以下步骤:

首先,从首选项xml文件中删除这两个SwitchPreferences的defaultValue属性

然后在GeneralReferenceFragment的onCreate方法中添加以下代码:

Boolean defaultValue = true;

SwitchPreference currentRadarPref = (SwitchPreference) getPreferenceManager().findPreference("current_radar");    
currentRadarPref .setDefaultValue(defaultValue);
currentRadarPref.setChecked(getPreferenceManager().getSharedPreferences().getBoolean("current_radar", true));

SwitchPreference twitterPref = (SwitchPreference) getPreferenceManager().findPreference("twitter");
twitterPref.setDefaultValue(defaultValue); 
twitterPref.setChecked(getPreferenceManager().getSharedPreferences().getBoolean("twitter", true));
你试过这个吗:

PreferenceManager.setDefaultValues(this, R.xml.pref_general, false);
与此相反:

PreferenceManager.setDefaultValues(this, R.xml.preference, false);

好吧,这太令人沮丧了。显然,在更改SwitchPreference默认值后,必须将AndroidStudio中的XML视图从文本切换到设计。这需要半秒钟,但随后您会看到开关移动到预定位置。然后,当你重新安装应用程序时,它就会工作。世界跆拳道联盟。我已经试了很多次来证实这一点。这是否列在文档中的某个位置?

我运行PreferenceManager.setDefaultValues(this,R.xml.preference,false);在我的应用程序类中,我尝试将其添加到类、片段、MainActivity类…Nothingty中,使用此SwitchPreference currentRadarPref=(SwitchPreference)getPreferenceManager()。findPreference(“current_radar”);CurrentRadarRef.setChecked(真);并告诉我开关是否启用。是的,成功了!非常感谢你!所以在XML中设置默认值是没有意义的?你知道为什么它不会以另一种方式工作吗?你不应该使用像真或假这样的硬值。事实上,我告诉过你使用硬值只是为了找到问题。现在我知道问题的原因了。只需使用我前面在oncreate方法中使用getBoolean方法编写的代码段再试一次。手动卸载设备上的应用程序,然后从android studio运行该应用程序。它会起作用的。只需卸载并尝试使用原始代码即可。它已经不起作用了Hey braj,我已经更新了我的答案。试试看。在从android studio重新安装应用程序之前,请确保手动卸载该应用程序。希望这一次能奏效。我给出的链接引用了这个例子
Boolean defaultValue = true;

SwitchPreference currentRadarPref = (SwitchPreference) getPreferenceManager().findPreference("current_radar");    
currentRadarPref .setDefaultValue(defaultValue);
currentRadarPref.setChecked(getPreferenceManager().getSharedPreferences().getBoolean("current_radar", true));

SwitchPreference twitterPref = (SwitchPreference) getPreferenceManager().findPreference("twitter");
twitterPref.setDefaultValue(defaultValue); 
twitterPref.setChecked(getPreferenceManager().getSharedPreferences().getBoolean("twitter", true));
PreferenceManager.setDefaultValues(this, R.xml.pref_general, false);
PreferenceManager.setDefaultValues(this, R.xml.preference, false);