是否可以在 android 中以编程方式创建 string.xml 文件?
Posted
技术标签:
【中文标题】是否可以在 android 中以编程方式创建 string.xml 文件?【英文标题】:Is it possible to create string.xml file programmatically in android? 【发布时间】:2021-12-05 04:50:04 【问题描述】:如何在android studio项目的资源文件中以编程方式创建string.xml文件
例如
"languageKeys": [
"key": "welcome_screen_title",
"value": "ZervBee"
,
"key": "skip_button",
"value": "தவிர்"
,
"key": "walkthrough_title_1",
"value": "மேசையிலிருந்து ஆர்டர்"
,
"key": "walkthrough_title_2",
"value": "ஆன்லைனில் பணம் செலுத்துங்கள்"
,
"key": "walkthrough_title_3",
"value": "வரிசைகளை தவிர்க்கவும்"
,
"key": "walkthrough_desc_1",
"value": "இப்போது நீங்கள் உங்கள் மேஜையில் இருந்து உணவை ஆர்டர் செய்யலாம்"
,
"key": "walkthrough_desc_2",
"value": "மாற்றத்தைப் பற்றி ஒருபோதும் கவலைப்பட வேண்டாம், ஆர்டர் செய்யும் போது சரியான தொகையை செலுத்துங்கள்"
,
"key": "walkthrough_desc_3",
"value": "வரிசையில் நிற்பதைத் தவிர்க்கவும், உங்கள் ஆர்டர் தயாராக இருக்கும்போது நாங்கள் அறிவிப்போம்"
,
"key": "choose_langauge_title",
"value": "மொழியை தேர்வு செய்யவும்"
,
"key": "my_cart",
"value": "என் வண்டி"
]
这是来自 API 的响应,采用 JSON 格式。我将响应转换为 xml 格式。 如何将该 xml 文件保存为资源中的字符串 file.xml。他们有什么方法可以转换它。
提前致谢
【问题讨论】:
您能否编辑您的问题以准确说明您要在这里实现的目标?示例会很有帮助。 【参考方案1】:string.xml
文件是资源文件。与任何其他资源文件一样,这些文件不能在运行时修改。更准确地说,res
文件夹中的任何文件都不能在运行时修改,例如。 string.xml
、drawables
、values.xml
等
理想情况下,您可以解析您的回复并将其存储在SharedPrefernce
中,或者使用Rooom
设置local db
。
【讨论】:
【参考方案2】:资源文件在构建时使用(单向/只读使用)。你误解了他们的目的。
您可以使用 GSON 等将 JSON 响应加载(反序列化)到 Java 对象中。
为反序列化准备 LanguageKey 类:
public class LanguageKey
public final String key;
public final String value;
public LanguageKey(String key, String value)
this.key = key;
this.value = value;
一个示例 MainActivity:
public class MainActivity extends AppCompatActivity
private static final String JSON = "[" +
"" +
"\"key\": \"welcome_screen_title\"," +
"\"value\": \"ZervBee\"" +
"," +
"" +
"\"key\": \"skip_button\"," +
"\"value\": \"தவிர்\"" +
"" +
"]";
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// deserialize using GSON
List<LanguageKey> languageKeys = new Gson().fromJson(
JSON, new TypeToken<List<LanguageKey>>().getType()
);
// Now, you can use languageKeys object directly
for (LanguageKey languageKey: languageKeys)
Log.d("LanguageKey", String.format(
"key: %s; value: %s",
languageKey.key, languageKey.value
));
注意:您的 JSON 无效。您可能需要在处理之前删除"languageKeys":
。
【讨论】:
感谢您回答我的问题。我动态使用字符串文件的目标取决于 json 响应。无需手动更改字符串值。他们是任何方式或任何其他替代选项 @SumanRadhakrishnan 其他方法之一是反序列化。以上是关于是否可以在 android 中以编程方式创建 string.xml 文件?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Android 中以编程方式启用禁用 GPS? [复制]