我是按照SDK里面的PreferenceFromXML做的一个静态XML配置文件,并且关联了一个PreferenceActivity。
设置修改都做好了,现在问题是怎么使用?配置数据放在/res/xml/preference.xml里面
运行时会在/data/data/APP_NAME/shared_prefs/目录下生成一个叫PackageName_preferences.xml的xml文件
可是我在应用中要访问设置时使用下面的代码就会报错:
SharedPreferences settings = getSharedPreferences("PackageName_preferences", 0);
我试了一下,如果吧设置的名字改成其他的,用SharedPreferences.Editor动态修改后是可以保存和读取的。
但是用静态的就无法直接访问这个xml,我觉得这个文件应该是受保护了,应该有其他办法读取可就是找不到。
设置修改都做好了,现在问题是怎么使用?配置数据放在/res/xml/preference.xml里面
运行时会在/data/data/APP_NAME/shared_prefs/目录下生成一个叫PackageName_preferences.xml的xml文件
可是我在应用中要访问设置时使用下面的代码就会报错:
SharedPreferences settings = getSharedPreferences("PackageName_preferences", 0);
我试了一下,如果吧设置的名字改成其他的,用SharedPreferences.Editor动态修改后是可以保存和读取的。
但是用静态的就无法直接访问这个xml,我觉得这个文件应该是受保护了,应该有其他办法读取可就是找不到。
getResources().getXml(R.xml.preference)也只能得到结构,
我要的是结果,是这个文件
/data/data/APP_NAME/shared_prefs/PackageName_preferences.xml
但是这个打不开
preference.xml里面是结构,考到/shared_prefs/下面干嘛?
preference.xml里面的代码<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <PreferenceCategory android:title="@string/preference_cate_basic"
android:key="Basic"> <ListPreference android:key="timesection_id"
android:title="@string/preference_basic_timesection" android:summary="@string/preference_basic_timesection_summary"
android:entries="@array/TimeSectionText" android:dialogTitle="@string/preference_basic_timesection_dialogtitle"
android:defaultValue="0" android:entryValues="@array/TimeSection" />
<ListPreference android:key="currency_id"
android:title="@string/preference_basic_currency" android:summary="@string/preference_basic_currency_summary"
android:entries="@array/CurrencyText" android:entryValues="@array/Currency"
android:dialogTitle="@string/preference_basic_currency_dialogtitle"
android:defaultValue="0" />
</PreferenceCategory>
</PreferenceScreen>我要的是结果,是这个文件/data/data/APP_NAME/shared_prefs/PackageName_preferences.xml
我用其他工具打开看了,代码是这样的<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name='currency_id'>0</string>
<string name='timesection_id'>2</string>
</map>这个文件应该是PreferenceActivity自动生成的,但是我现在的问题是无法访问它。
你的意思是不是说在运行时把一个类似/data/data/APP_NAME/shared_prefs/PackageName_preferences.xml这样的文件复制到/shared_prefs/目录下,然后进行读写,那设置页怎么做?是要重写一个吗?应该不至于这么麻烦吧
settings =PreferenceManager.getDefaultSharedPreferences(AdapterService.this);