Android: как инициализировать значения по умолчанию из XML, используемого несколькими экземплярами PreferenceActivity? - PullRequest
0 голосов
/ 14 сентября 2011

У меня есть несколько классов 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>

1 Ответ

1 голос
/ 15 сентября 2011

Отвечая на мой собственный вопрос: используйте true вместо false in setDefaultValues ​​(...) вызовов.

В противном случае вызов дляпервый файл XML приведет к тому, что оставшиеся вызовы ничего не сделают.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...