Visual Studio C#下Xamarin Android设置Toolbar标题报类型转换错误求助
解决Xamarin Android中Toolbar.SetTitle传入字符串报错的问题
嘿,我刚好碰到过这个问题!你遇到的“Cannot convert from string to int”错误,本质是**V7Toolbar的SetTitle方法默认只接受资源ID(int类型)**,直接传字符串自然会触发类型不匹配的报错。下面给你几种靠谱的解决办法:
方法一:通过SupportActionBar设置标题(最推荐)
既然你已经调用了SetSupportActionBar(toolbar)把Toolbar设为ActionBar,那直接通过SupportActionBar的Title属性赋值就好,这个属性支持直接传入字符串:
var toolbar = FindViewById<V7Toolbar>(Resource.Id.toolbar); SetSupportActionBar(toolbar); // 这里直接给Title属性赋值字符串即可 SupportActionBar.Title = "This is the title";
这种方式最简洁,也是官方推荐的常规用法。
方法二:给Toolbar的SetTitle传字符串类型的重载
如果一定要直接调用Toolbar的SetTitle方法,你可以使用接受Java.Lang.ICharSequence类型的重载,把C#字符串转成对应的Java类型:
var toolbar = FindViewById<V7Toolbar>(Resource.Id.toolbar); // 把C#字符串包装成Java.Lang.String传入 toolbar.SetTitle(new Java.Lang.String("This is the title")); SetSupportActionBar(toolbar);
不过这种写法有点繁琐,一般不如第一种实用。
方法三:使用字符串资源ID(适合多语言场景)
如果你的项目需要做多语言本地化,更规范的做法是把标题定义在字符串资源文件里:
- 打开
Resources/values/strings.xml,添加标题资源:
<string name="toolbar_main_title">This is the title</string>
- 代码里传入资源ID:
var toolbar = FindViewById<V7Toolbar>(Resource.Id.toolbar); // 传入字符串资源的ID(int类型) toolbar.SetTitle(Resource.String.toolbar_main_title); SetSupportActionBar(toolbar);
这种方式能轻松适配不同语言的资源文件,适合正式项目开发。
内容的提问来源于stack exchange,提问作者Mike Irish
相关产品推荐
相关产品推荐

