我是按照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,我觉得这个文件应该是受保护了,应该有其他办法读取可就是找不到。

解决方案 »

  1.   

    都放在资源文件里编译进安装包里,要用ID来访问了,当然不能直接这样访问,要这样访问可以拷贝这个文件到shared_prefs文件夹下载访问。或getResources().getXml(R.xml.xxx),返回xmlResourceParser 对象来访问。
      

  2.   

    资源文件里的是设置的结构xml,/res/xml/preference.xml
    getResources().getXml(R.xml.preference)也只能得到结构,
    我要的是结果,是这个文件
    /data/data/APP_NAME/shared_prefs/PackageName_preferences.xml
    但是这个打不开
      

  3.   

    所以第一次运行时候要preference.xml拷贝到/shared_prefs/目录下才能进行访问。
      

  4.   

    还是不明白,能贴点代码吗?
    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/目录下,然后进行读写,那设置页怎么做?是要重写一个吗?应该不至于这么麻烦吧
      

  5.   

    我自己找到了
    settings =PreferenceManager.getDefaultSharedPreferences(AdapterService.this);