扫码关注官方订阅号
我百度过后,都是千篇一律地教人怎样获取string-array里的东西,但却没有找到怎么往string-array的教程,所以来这里问问各位大虾~希望有那么一个功能吧QwQ。。。不然要另求他道就太麻烦了。谢谢!
认证高级PHP讲师
Resources资源文件(res/)不允许在运行时修改,包括String Array。如果你仅仅是需要保存一组字串的话,可以考虑`SharedPreferences,
res/
// 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); }
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/...
Internal Storage
External Storage
所以,可以把初始文件放到 res/ 或者 assets/ 中,运行时读取,需要修改时再写入到上述两种storage中。每次需要读取或者修改时,先判断storage中是否有这个文件,若有,读取;若无,读取初始文件。
assets/
如果你有需求往string-array里放东西, 就不应该放在string-array里啊。。
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
Resources资源文件(
res/)不允许在运行时修改,包括String Array。如果你仅仅是需要保存一组字串的话,可以考虑`SharedPreferences,
举个栗子:
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中是否有这个文件,若有,读取;若无,读取初始文件。
如果你有需求往string-array里放东西, 就不应该放在string-array里啊。。