2011-09-14 72 views
0

我有多個PreferenceActivity類,因爲我的主PreferenceActivity XML本質上是一個索引到多種偏好。Android:如何初始化多個PreferenceActivity實例使用的XML的默認值?

我正在尋找如何在安裝後首次運行應用程序時從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); 

FILES: R.xml.prefs是:

 <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

回答我自己的問題:使用true而不是false in setDefaultValues(...)調用。

否則,對第一個XML文件的調用將導致其餘的調用不執行任何操作。

+1

是的這將工作,但你不想一遍又一遍讀取XML文件。這是這樣做的。 –

相關問題