2011-01-12 22 views
8

Tôi có hai Màn hình tùy chọn Android được xác định trong ứng dụng Android của tôi trong XML.Tham khảo màn hình tùy chọn Android riêng biệt từ bên trong Màn hình ưu tiên khác trong XML

Ví dụ, màn hình 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> 

và màn hình 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> 

Tôi muốn màn hình 2 là một màn hình riêng biệt để có thể truy cập theo đúng nghĩa của nó nhưng tôi cũng muốn sở thích của mình cũng là một phần của màn hình. Có cách nào đơn giản tôi có thể chỉ cần tham khảo màn hình 2 từ trong màn hình 1? Hoặc tôi chỉ cần về cơ bản lặp lại cùng một nội dung ưu tiên trong màn hình tùy chọn phụ trong Màn hình 1.

+0

Bạn hãy thử sử dụng '' thẻ? Tôi không chắc chắn nếu nó hoạt động cho PreferenceScreen, nhưng đó là cách để bao gồm bố trí bình thường trong các bố trí khác. Xem http://developer.android.com/resources/articles/layout-tricks-reuse.html –

+0

Cảm ơn đề xuất Mayra. Thật không may có vẻ như bị hạn chế sử dụng lại các widget bố trí. Nhưng tôi chưa bao giờ biết về nó nên tôi vẫn học được điều gì đó! Chúc mừng – Tim

Trả lời

12

Tôi không tìm cách "hợp nhất" cả hai tệp trực tiếp trong XML, nhưng bạn có thể cố gắng hợp nhất chúng sử dụng 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... 
} 

Chúc may mắn

Tom

+0

Làm nó trong mã là hoàn toàn tốt đẹp. Điều đó thật tuyệt. Cảm ơn sự giúp đỡ của bạn Tom – Tim

6

Bạn có thể làm điều này trong XML với Intent:

<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

Tôi muốn đưa ra câu trả lời của bạn, nhưng đại diện của bạn là 1.024 và tôi không thể tự thay đổi một số vòng đẹp. –