You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Fragment/Activity向XML传值,能否将动态值写入strings.xml?

关于运行时写入strings.xml的问题解答

该需求无法直接实现,核心原因如下:

  • Android APK中的res/values/strings.xml属于编译期静态资源,打包后为只读属性,应用运行时没有修改写入的系统权限。
  • strings.xml的设计用途是存储预设的固定静态文案,运行时动态获取的用户数据不属于这类资源的适用场景。

可选替代实现方案

方案1:使用SharedPreferences存储动态用户数据

这是存储轻量用户信息的官方推荐方案,全局可读写,适合存储用户名、邮箱这类配置信息:

  1. 登录成功后写入数据:
// 仅需在登录成功时执行一次存储
val sharedPref = getSharedPreferences("USER_INFO", Context.MODE_PRIVATE)
sharedPref.edit()
    .putString("USERNAME", 实际获取到的用户名)
    .putString("EMAIL", 实际获取到的邮箱)
    .apply()
  1. 任意页面读取数据使用:
val sharedPref = getSharedPreferences("USER_INFO", Context.MODE_PRIVATE)
val username = sharedPref.getString("USERNAME", "默认值")
val email = sharedPref.getString("EMAIL", "默认值")
// 读取后赋值给对应UI控件即可

方案2:搭配Data Binding实现XML直接绑定数据

如果希望减少代码中手动给UI赋值的逻辑,可以开启Data Binding功能,直接将数据和XML布局绑定:

  1. 首先在模块级build.gradle中开启Data Binding配置
  2. 定义用户数据实体类
  3. 在XML布局中直接绑定属性即可:
<TextView
    android:id="@+id/nav_username"
    android:text="@{userInfo.username}"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>

只需在Activity/Fragment中给绑定实例传入用户数据,XML会自动完成内容渲染。


内容的提问来源于stack exchange,提问作者Mark J

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 14:36:03