Ссылка на отдельный экран настроек Android из другого экрана настроек в XML - PullRequest
9 голосов
/ 12 января 2011

У меня есть два экрана настроек Android, определенные в моем приложении для Android в формате XML.

Например, Экран 1

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:key="screen1">
    <PreferenceCategory android:title="Preferences">
        <CheckBoxPreference 
            android:defaultValue="true"
            android:title="test"
            android:key="test_pref"/>
    </PreferenceCategory>
</PreferenceScreen>

и экран 2

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:key="screen2">
    <CheckBoxPreference 
        android:key="checkbox" 
        android:title="Checkbox">
    </CheckBoxPreference>
</PreferenceScreen>

Я бы хотел, чтобы экран 2 был отдельным экраном, чтобы он был доступен сам по себе, но я также хотел бы, чтобы его настройки были частью экрана также. Есть ли простой способ, которым я могу просто ссылаться на экран 2 из экрана 1? Или мне просто нужно повторить те же самые настройки на экране дополнительных настроек на экране 1.

Ответы [ 2 ]

13 голосов
/ 20 января 2011

Я не нашел способа «объединить» оба файла напрямую в XML, но вы можете попробовать объединить их, используя Java:

@Override
public void onCreate(final Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    getPreferenceManager().setSharedPreferencesName(Settings.PREFERENCES_NAME);
    getPreferenceManager().setSharedPreferencesMode(Context.MODE_WORLD_READABLE);

    // add the first xml
    addPreferencesFromResource(R.xml.preferences_settings);
    // add another xml
    addPreferencesFromResource(R.xml.preferences_mail_settings);

    // do the things, that need to be done...
}

Удачи

Tom

7 голосов
/ 30 марта 2011

Вы можете сделать это в XML с намерением:

<PreferenceScreen android:key="screen1">
  <PreferenceScreen android:key="screen2">
    <intent android:action="com.example.PREFERENCE_2" />
  </PreferenceScreen>
</PreferenceScreen>

AndroidManifest.xml:

<activity android:name="com.example.Preference2Activity">
  <intent-filter>
    <category android:name="android.intent.category.DEFAULT" />
    <action android:name="com.example.PREFERENCE_2" />
  </intent-filter>
</activity>
...