У меня есть несколько классов PreferenceActivity, потому что мой основной XML PreferenceActivity по сути является указателем на несколько видов предпочтений.
Я ищу справку о том, как установить значения по умолчанию из XML при первом запуске приложения.после установки.Я безуспешно пробовал следующее (из основного действия onCreate ()):
PreferenceManager.setDefaultValues(ctx, R.xml.prefs, false);
PreferenceManager.setDefaultValues(ctx, R.xml.prefsdisplay, false);
PreferenceManager.setDefaultValues(ctx, R.xml.prefsloc, false);
PreferenceManager.setDefaultValues(ctx, R.xml.prefsmaps, false);
PreferenceManager.setDefaultValues(ctx, R.xml.prefsmisc, false);
Где R.xml.prefs - это файл основных настроек, а остальные - предпочтения подуровня.
Обратите внимание, что у меня есть два действия с предпочтениями, одно из которых использует R.xml.prefs в качестве дескриптора:
addPreferencesFromResource(R.xml.prefs);
, а другое использует любое имя файла xml, переданное в его намерении при запуске.(Кстати, другие способы справиться с этим, которые совместимы до 1.6, были бы интересны):
Intent intent = this.getIntent();
String data = intent.getDataString();
String pkgName = getPackageName();
int resID = getResources().getIdentifier(data , "xml", pkgName);
addPreferencesFromResource(resID);
ФАЙЛЫ: R.xml.prefs is:
<PreferenceCategory android:title="Map Settings">
<PreferenceScreen android:title="Map Display Settings"
android:summary="Control Location Settings">
<intent
android:action="android.intent.action.VIEW"
android:targetPackage="com.mycompany.app"
android:targetClass="com.mycompany.app.app.SubPrefsAct"
android:data="prefsloc"/>
</PreferenceScreen>
</PreferenceCategory>
</PreferenceScreen>
И prefsloc.xml это:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="GPS and Location">
<CheckBoxPreference android:key="ShowLocation"
android:summary="Shows location symbol on map" android:defaultValue="true"
android:title="Show Location"></CheckBoxPreference>
<CheckBoxPreference android:key="UseGps"
android:summary="Uses GPS to refine position" android:title="Use GPS"
android:defaultValue="true"></CheckBoxPreference>
</PreferenceCategory>
</PreferenceScreen>