我的 monodroid UI 元素(按钮、TextView...)中的枚举需要一个 .Net 包

Posted

技术标签:

【中文标题】我的 monodroid UI 元素(按钮、TextView...)中的枚举需要一个 .Net 包【英文标题】:Need a .Net bag for my enums in my monodroid UI element (Button,TextView...) 【发布时间】:2012-10-14 19:05:52 【问题描述】:

我正在尝试在我的 ListView 的自定义 ListItem 中设置按钮的标签,但需要 Java.Lang.Object 吗?在 .Net 对象世界中,此 Tag 属性似乎不合适。

所以,我需要一种方法来获取/设置一个 .Net 包到我的 UI 元素:

button.Bag=MYEnumsEnum1;

然后

MyEnums myEnum=(MyEnums)button.Bag;

可以用 monodroid 吗? 我怎样才能绕过这个问题?

【问题讨论】:

我对Monodroid一无所知,但不应该是button.Tag吗? 否,因为它使用 Java.Lang.Object 而不是 System.Object:所以转换不可用。 我很困惑。 button.Tag 需要 Java.Lang.Object?您在问题中同时使用了TagBag,所以不清楚。 【参考方案1】:

您可以通过继承 Java.Lang.Object 来创建一个连接到 .net 的 java 对象

所以你可以例如使用

 class Thing : Java.Lang.Object 
 
       public MyEnum Value  get; set; 
 

这可以用来存储类似的东西:

button.Tag = new Thing()  Value = MyEnum.Running ;

然后再次提取为:

var myEnumValue = ((Thing)button.Tag).Value;

这是我使用的一个包装器:

https://github.com/slodge/MvvmCross/blob/vnext/Cirrious/Cirrious.MvvmCross.Binding.Droid/MvxJavaContainer.cs

这用于:

用于包装列表项对象的列表适配器:https://github.com/slodge/MvvmCross/blob/vnext/Cirrious/Cirrious.MvvmCross.Binding.Droid/Views/MvxBindableListAdapter.cs https://github.com/slodge/MvvmCross/blob/vnext/Cirrious/Cirrious.MvvmCross.Binding.Droid/Binders/MvxBindingLayoutInflatorFactory.cs的最后一个方法中绑定属性的标签存储

【讨论】:

以上是关于我的 monodroid UI 元素(按钮、TextView...)中的枚举需要一个 .Net 包的主要内容,如果未能解决你的问题,请参考以下文章

为啥 MonoDroid 找不到我的程序集?

UI元素(标签,按钮等)的Swift命名约定

MonoDroid:未处理的异常恢复

Xcode 8:UI 测试远程按钮错误:找不到焦点元素

将 UI 元素隐藏在其他 UI 元素后面

ui测试xcode,如何使用cellquery点击表格视图单元格按钮