【发布时间】:2015-10-16 14:25:53
【问题描述】:
This 的问题是一样的,但它似乎没有回答为什么这个转换在发布模式下失败但在调试中有效的问题。
Android 文档指定:
返回 TextView 正在显示的文本。如果调用了 setText() 使用 BufferType.SPANNABLE 或 BufferType.EDITABLE 的参数,您 可以将此方法的返回值转换为 Spannable 或 Editable, 分别。注意:返回值的内容不应该是 修改的。如果你想要一个可修改的,你应该制作自己的副本 首先。
如果我在调试中运行以下它可以工作,在发布时它会抛出一个InvalidCastException
var editText = FindViewById<EditText>(Resource.Id.MyEditText);
editText.SetText("hello", TextView.BufferType.Spannable);
var myTextView = FindViewById<TextView>(Resource.Id.MyTextView);
try
{
ISpannable t21 = (ISpannable)editText.TextFormatted;
ISpanned t22 = (ISpanned)editText.TextFormatted;
}
catch (Exception exception)
{
myTextView.Text = exception.Message;
}
FATAL EXCEPTION: main
06-09 16:30:34.135 E/AndroidRuntime(31672): Process: App27.App27, PID: 31672
06-09 16:30:34.135 E/AndroidRuntime(31672): java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
06-09 16:30:34.135 E/AndroidRuntime(31672): Caused by: md52ce486a14f4bc06-09 16:30:34.135 E/AndroidRuntime(31672): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
06-09 16:30:34.135 E/AndroidRuntime(31672): at dalvik.system.NativeStart.main(Native Method)
06-09 16:30:34.135 E/AndroidRuntime(31672): Caused by: java.lang.reflect.InvocationTargetException
06-09 16:30:34.135 E/AndroidRuntime(31672): at java.lang.reflect.Method.invokeNative(Native Method)
06-09 16:30:34.135 E/AndroidRuntime(31672): at java.lang.reflect.Method.invoke(Method.java:515)
06-09 16:30:34.135 E/AndroidRuntime(31672): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
06-09 16:30:34.135 E/AndroidRuntime(31672): ... 2 more
06-09 16:30:34.135 E/AndroidRuntime(31672): Caused by: md52ce486a14f4bcd95899665e9d932190b.JavaProxyThrowable: System.InvalidCastException: Cannot cast from source type to destination type.
06-09 16:30:34.135 E/AndroidRuntime(31672): at App27.MainActivity.OnCreate (Android.OS.Bundle) [0x00074] in d:\Users\dbeattie\Documents\Visual Studio 2013\Projects\App27\App27\MainActivity.cs:29
06-09 16:30:34.135 E/AndroidRuntime(31672): at Android.App.Activity.n_OnCreate_Landroid_os_Bundle_ (intptr,intptr,intptr) <IL 0x00013, 0x000ef>
06-09 16:30:34.135 E/AndroidRuntime(31672): at (wrapper dynamic-method) object.6917b467-8852-465b-9332-eaefa6fe6832 (intptr,intptr,intptr) <IL 0x00017, 0x00043>
版本信息:
Xamarin 3.11.590.0 (5160db7) Visual Studio 扩展启用 Xamarin.iOS 和 Xamarin.Android 的开发。
Xamarin.Android 5.1.3.1 (d419c934e6ce2113653ff4c40214e3a5d5a69440) 支持 Xamarin.Android 开发的 Visual Studio 插件。
【问题讨论】:
-
显然您已经添加了某种跟踪并且知道
editText的确切类型 - 使用此类信息更新帖子可能对任何试图回答的人有所帮助...
标签: c# android xamarin xamarin.android