android string-array xml 引用,如何把数据动态地写进array.xml的string-array里?

Resources资源文件(res/)不允许在运行时修改,包括String Array。

如果你仅仅是需要保存一组字串的话,可以考虑`SharedPreferences,

// API level 11

SharedPreferences.Editor.putStringSet(String key, Set values);

Set getStringSet(String key, Set defValues);

举个栗子:

private static final String PREF_KEY_STRINGS = "key_strings";

private void saveStringsToPref(ArrayList list) {

Set set = new HashSet();

set.addAll(list);

PreferenceManager.getDefaultSharedPreferences(this)

.edit()

.putStringSet(PREF_KEY_STRINGS, set)

.commit();

}

// 需要注意,返回的ArrayList中元素的顺序可能和存储时的不一致。

private ArrayList getStringsFromPref() {

Set set = PreferenceManager.getDefaultSharedPreferences(this)

.getStringSet(PREF_KEY_STRINGS, null);

return new ArrayList(set);

}

Update

Q: 再请教一下你,是所有的在/res(包括自定义的xml)都不可以在运行时修改,是吗?如果我把自定义的xml放在工程的最外一层呢?是否可以对其进行修改?

A: 资源文件是被预编译的,所以运行时无法修改。而且Android是根据特定目录也就是res/...来寻找资源文件。

我不清楚你把自定义的xml放到外层,是否能在运行时引用这个文件(估计不可以,未测试)。

有两种方式可以达到你保存文件的目的:Internal Storage和External Storage。前一种为app私有,后一种存储到sdcard,任何app都可以访问。

可以参考:http://developer.android.com/guide/topics/data/data-storage.html

所以,可以把初始文件放到 res/ 或者 assets/ 中,运行时读取,需要修改时再写入到上述两种storage中。

每次需要读取或者修改时,先判断storage中是否有这个文件,若有,读取;若无,读取初始文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值