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

Xamarin Android访问strings.xml字符串资源报错求解决方案

安卓端Xamarin Forms多语言资源加载失败解决办法

嘿,我看你已经折腾了好一阵了,清理重建、删文件夹这些基础操作都试过了,咱们从两个核心问题入手解决:

1. 先搞定「Ambiguous reference」歧义引用的问题

这个提示说明你的Resource.String里出现了重复的资源ID,十有八九是Resource.Designer.cs生成出问题了。你可以这么操作:

  • 找到安卓项目Properties文件夹下的Resource.Designer.cs,手动删掉它
  • 右键安卓项目选择「生成」,Visual Studio会自动重新生成一个干净的Resource.Designer.cs,重复引用的问题就能解决

2. 替换错误的资源获取方式

你现在用的Resources.System.GetText()是用来获取安卓系统自带的资源字符串的,根本不是你自己项目里Strings.xml里的内容!这才是报错String resource ID #0x7f070040的关键原因。

正确的做法是用应用上下文的Resources来获取:

  • 如果是在Activity类里,直接写:
    BarcodeScanner.TopText = Resources.GetString(Resource.String.barcodescanner_toptext);
    
  • 如果是在ViewModel这类非Activity的类里,需要先拿到应用上下文:
    var appContext = Android.App.Application.Context;
    BarcodeScanner.TopText = appContext.Resources.GetString(Resource.String.barcodescanner_toptext);
    

3. 验证多语言切换逻辑(可选)

确保你切换语言的代码是正确的,比如切换到德语的示例:

// 设置德语 locale
var deLocale = new Java.Util.Locale("de");
Java.Util.Locale.Default = deLocale;

var config = new Android.Content.Res.Configuration();
config.Locale = deLocale;
Android.App.Application.Context.Resources.UpdateConfiguration(config, Android.App.Application.Context.Resources.DisplayMetrics);

// 重启当前页面让语言生效
var mainActivity = (MainActivity)Android.App.Application.Context;
mainActivity.Finish();
mainActivity.StartActivity(mainActivity.Intent);

最后再来一次彻底的清理部署

  • 清理整个解决方案
  • 删除安卓项目的bin和obj文件夹
  • 卸载手机上的旧应用
  • 重新生成并部署到设备

按这个流程走下来,应该就能解决你的问题了!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:08:31