2011-01-12 20 views
8

私はAndroidアプリでXMLで定義された2つのAndroidの設定画面を持っています。XMLの別の設定画面内の別のAndroid設定画面を参照してください

例えば、画面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のようになるが、私はまた、その好みを希望画面1の一部にもなります。 画面1から画面2を参照できる簡単な方法はありますか? また、画面1のサブ設定画面で基本的に同じ設定を繰り返すだけでいいですか?

+0

あなたは '' タグを使用してみましたか? PreferenceScreenで動作するかどうかはわかりませんが、これは他のレイアウト内に通常のレイアウトを含める方法です。 http://developer.android.com/resources/articles/layout-tricks-reuse.htmlを参照してください。 –

+0

Mayraの提案に感謝します。残念ながら、レイアウトウィジェットの再利用に限られているようです。しかし、私はまだそれについて知りませんでしたので、私はまだ何かを学んだ!乾杯。 – Tim

答えて

12

両方のファイルを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... 
} 

幸運

トム

+0

コードで行うのは大丈夫です。すごいね。助けてくれてありがとうTom – Tim

6
あなたは意図して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> 
+1

私はあなたの答えをupvoteしたいと思っていましたが、あなたの担当者は1,024であり、素晴らしい丸数字を変更することはできませんでした。 –

関連する問題