来自数据库的Android字符串资源

来自数据库的Android字符串资源,android,localization,android-resources,Android,Localization,Android Resources,我正在寻找一种变通方法,用SQLite表的内容替换字符串资源(strings.xml)。表的内容正在更改,并与联机数据库同步。因此,当我在服务器上修改一些文本时,它们也应该在应用程序中更改,同时运行 我不想以实用的方式设置每个文本视图和其他文本,也不想创建自定义文本视图等 是否可以从该数据库表生成xml并将其用作字符串资源?(当然,在运行时,生成的xml将与原始xml完全相同,除了字符串值,因此键不会改变) 或者有人有办法解决这个问题吗?无法动态更改strings.xml文件。您可以做的是抽象字

我正在寻找一种变通方法,用SQLite表的内容替换字符串资源(strings.xml)。表的内容正在更改,并与联机数据库同步。因此,当我在服务器上修改一些文本时,它们也应该在应用程序中更改,同时运行

我不想以实用的方式设置每个文本视图和其他文本,也不想创建自定义文本视图等

是否可以从该数据库表生成xml并将其用作字符串资源?(当然,在运行时,生成的xml将与原始xml完全相同,除了字符串值,因此键不会改变)
或者有人有办法解决这个问题吗?

无法动态更改strings.xml文件。您可以做的是抽象字符串收集

class YourUtilites {

    static HashMap<String, String> dbCache = new HashMap<String, String>();
    public static String getString(Context context, String key, String defaultID) {
        String value = null;

        value = dbCache.get(key);

        if (value == null) {
            // Check if the key exists in the database
            String value = db.somedbFunctionToGetString(key);
            if (value != null) {
                dbCache.put(key, value);
            }
        }

        if (value == null) {
            // If value is not in the database, resort to the default value
            value = context.getResources().getString(defaultID);
        }

        return value;
    }
}
通过这种方式,您可以更新db值并立即显示它。更新数据库值时,不要忘记清除数据库缓存。这个解决方案显而易见,db访问速度很慢,所以请记住这一点


希望这有帮助。

不可能。当然,除非你的应用程序反编译自己>用新值覆盖strings.xml>重新编译并将自己复制到
/data/app/
,然后强制重新启动目标。好吧,这只是我的想法,但还有其他方法吗?
textView.setText(YourUtilities.getString("dbKey", R.id.defaultValue1, this);
textView2.setText(YourUtilities.getString("dbKey2", R.id.defaultValue2, this);
...