如何从Xamarin android资源中的strings.xml正确访问字符串资源?

时间:2018-05-16 14:59:50

标签: c# android xamarin android-resources

我无法从我的资源文件中获取字符串,但找不到可行的解决方案。我曾与官方Xamarin Tutorialexample App合作过。 这是一个xamarin表单项目,我希望该应用程序以德语/英语显示。 ios部分已经可以使用了。

到目前为止我所拥有的:

以下文件夹结构中的我的语言文件:

资源>值>的strings.xml

资源> values-de>的strings.xml

的strings.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <string name="barcodescanner_toptext">QR-Code Scanner</string>
  <string name="barcodescanner_bottomtext">Please scan QR-Code.</string>
  <string name="barcodescanner_cancelbuttontext">Cancel</string>
  <string name="barcodescanner_flashbuttontext">Flash</string>
  <string name="barcodescanner_errortext">Scan canceled</string>
</resources>

Strings.xml文件的属性“Build Action”设置为“AndroidResource”。在Resource.Designer.cs中,字符串是可见的。

// aapt resource value: 0x7f070041
public const int barcodescanner_bottomtext = 2131165249;

// aapt resource value: 0x7f070042
public const int barcodescanner_cancelbuttontext = 2131165250;

// aapt resource value: 0x7f070044
public const int barcodescanner_errortext = 2131165252;

// aapt resource value: 0x7f070043
public const int barcodescanner_flashbuttontext = 2131165251;

// aapt resource value: 0x7f070040
public const int barcodescanner_toptext = 2131165248;

在我的Scanner.cs文件中,我按照教程中的那样进行调用:

BarcodeScanner.TopText = Resources.System.GetText(Resource.String.barcodescanner_toptext);

我必须使用“.System”。因为资源上没有“GetText”。如果我按下“。”在Resource.String之后我得到所有的资源串来选择。但是,如果我在Android上运行应用程序,我会收到以下错误:

  

获取资源编号0x7f070040

的值时没有已知的包      

System.TypeInitializationException:'xyz.ViewModels.MainViewModel'的类型初始值设定项引发了异常。 ---&GT; System.Reflection.TargetInvocationException:调用目标抛出了异常。 ---&GT; Android.Content.Res.Resources + NotFoundException:字符串资源ID#0x7f070040

到目前为止我做了什么:

  • 清理并重建解决方案
  • 删除了obj和bin文件夹
  • 重新启动所有计算机
  • 从智能手机上卸载了该应用

我不知道接下来该做什么? 谢谢你的帮助!

修改 如果它有用,Visual Studio会在此部分向我展示“Resource.String。 barcodescanner_toptext ”以下消息:“不明确的引用:int barcodescanner_toptext(在类String中)int barcodescanner_toptext(在类String中)匹配”

0 个答案:

没有答案