У меня есть два (первый и последний, показанные ниже). Настройки переключателя в моем XML-файле по умолчанию имеют значение «истина», а остальные - «ложь».
XML
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory
android:title="Radar">
<SwitchPreference
android:defaultValue="true"
android:key="current_radar"
android:title="Current Radar"/>
<SwitchPreference
android:defaultValue="false"
android:key="current_satellite"
android:title="Current Satellite"/>
</PreferenceCategory>
<PreferenceCategory
android:title="Maps">
<SwitchPreference
android:defaultValue="false"
android:key="fire"
android:title="Fire"/>
<SwitchPreference
android:defaultValue="false"
android:key="flood"
android:title="Flood"/>
<SwitchPreference
android:defaultValue="false"
android:key="hurricane"
android:title="Hurricane"/>
<SwitchPreference
android:defaultValue="false"
android:key="tornado"
android:title="Tornado"/>
</PreferenceCategory>
<PreferenceCategory
android:title="Social Media">
<SwitchPreference
android:defaultValue="true"
android:key="twitter"
android:title="Twitter"/>
</PreferenceCategory>
</PreferenceScreen>
Я хочу, чтобы эти два отображались как истинные, но они продолжают отображаться как ложные каждый раз, когда я запускаю свое приложение.
Вот мой
Класс
package com.example.user.weatherdashboardandroid;
import android.annotation.TargetApi;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceFragment;
import android.preference.PreferenceManager;
import android.view.MenuItem;
/**
* A {@link PreferenceActivity} that presents a set of application settings. On
* handset devices, settings are presented as a single list. On tablets,
* settings are split by category, with category headers shown to the left of
* the list of settings.
* <p>
* See <a href="http://developer.android.com/design/patterns/settings.html">
* Android Design: Settings</a> for design guidelines and the <a
* href="http://developer.android.com/guide/topics/ui/settings.html">Settings
* API Guide</a> for more information on developing a Settings UI.
*/
public class DataFeeds extends AppCompatPreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getFragmentManager().beginTransaction()
.replace(android.R.id.content, new GeneralPreferenceFragment()).commit();
}
/**
* This method stops fragment injection in malicious applications.
* Make sure to deny any unknown fragments here.
*/
protected boolean isValidFragment(String fragmentName) {
return PreferenceFragment.class.getName().equals(fragmentName)
|| GeneralPreferenceFragment.class.getName().equals(fragmentName);
}
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public static class GeneralPreferenceFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.pref_general);
setHasOptionsMenu(true);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == android.R.id.home) {
startActivity(new Intent(getActivity(), MainActivity.class));
return true;
}
return super.onOptionsItemSelected(item);
}
}
}
Я нашел другие вопросы аналогичного характера, например this, который рекомендует использовать:`
PreferenceManager.setDefaultValues(this, R.xml.preference, false);
внутри OnCreate этого класса, моя MainActivity и фрагмент, показанный выше (контекст - getActivity () внутри OnCreate фрагмента), но ни один из них у меня не работает.
В случайном порядке переключатель «Пламя» оказывается включенным, хотя по умолчанию он установлен в положение «ложь». Возможно, есть проблема с наличием слишком большого количества переключателей для одного класса?
Как мне решить мою проблему?