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>
是的這將工作,但你不想一遍又一遍讀取XML文件。這是這樣做的。 –