我百度过后,都是千篇一律地教人怎样获取string-array里的东西,但却没有找到怎么往string-array的教程,所以来这里问问各位大虾~
希望有那么一个功能吧QwQ。。。不然要另求他道就太麻烦了。谢谢!
如果你有需求往string-array里放东西, 就不应该放在string-array里啊。。
Resources资源文件(res/
)不允许在运行时修改,包括String Array。
如果你仅仅是需要保存一组字串的话,可以考虑`SharedPreferences,
// API level 11
SharedPreferences.Editor.putStringSet(String key, Set<String> values);
Set<String> getStringSet(String key, Set<String> defValues);
举个栗子:
private static final String PREF_KEY_STRINGS = "key_strings";
private void saveStringsToPref(ArrayList<String> list) {
Set<String> set = new HashSet<String>();
set.addAll(list);
PreferenceManager.getDefaultSharedPreferences(this)
.edit()
.putStringSet(PREF_KEY_STRINGS, set)
.commit();
}
// 需要注意,返回的ArrayList中元素的顺序可能和存储时的不一致。
private ArrayList<String> getStringsFromPref() {
Set<String> set = PreferenceManager.getDefaultSharedPreferences(this)
.getStringSet(PREF_KEY_STRINGS, null);
return new ArrayList<String>(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中是否有这个文件,若有,读取;若无,读取初始文件。