Snackbar 问题(仅在调试模式下)

Posted

技术标签:

【中文标题】Snackbar 问题(仅在调试模式下)【英文标题】:Snackbar issue (only in debug mode) 【发布时间】:2015-09-23 10:25:07 【问题描述】:

我在 android 支持设计库中遇到了 Snackbar 的问题。 奇怪的是,它只发生在我在调试模式下运行我的应用程序时,在发布模式下它一切正常。

有人对这个问题有想法吗?这似乎是支持库中的一个错误。

代码

using (var snackbar = Snackbar.Make(View, "Nieuwe order aangemaakt", Snackbar.LengthLong).SetAction("OK", v =>  ))
    snackbar.Show();

例外

07-06 11:47:50.414 I/MonoDroid(13296):Java.Lang.ClassCastException:抛出了“Java.Lang.ClassCastException”类型的异常。 07-06 11:47:50.414 I/MonoDroid(13296): 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () 07-06 11:47:50.414 I/MonoDroid(13296): 在 OverAllField.XamarinAndroid.Fragments.Planning.PlanningFragment.FloatingActionButton_Click (object,System.EventArgs) [0x00001] 在 c:\Development\Apps\FieldService-Tablet\OverAllF07 -06 11:47:50.414 I/MonoDroid(13296): 在 Android.Runtime.JNIEnv.CallStaticObjectMethod (intptr,intptr,Android.Runtime.JValue*) [0x00064] 在 /Users/builder/data/lanes/1502/24855232 /source/monodroid/src/Mono.Android/src/Runtime/JNIEnv.g.cs:1301 07-06 11:47:50.414 I/MonoDroid(13296): 在 Android.Support.Design.Widget.Snackbar.Make (Android.Views.View,Java.Lang.ICharSequence,int) 07-06 11:47:50.414 I/MonoDroid(13296): 在 Android.Support.Design.Widget.Snackbar.Make (Android.Views.View,string,int) 07-06 11:47:50.414 I/MonoDroid(13296): 在 OverAllField.XamarinAndroid.Fragments.Planning.PlanningFragment.FloatingActionButton_Click (object,System.EventArgs) [0x00001] 在 c:\Development\Apps\FieldService-Tablet\OverAllField .XamarinAndroid\OverAllField.Android\Fragments\Planning\PlanningFragment.cs:74 07-06 11:47:50.414 I/MonoDroid(13296): 在 Android.Views.View/IOnClickListenerImplementor.OnClick (Android.Views.View) [0x0000d] 在 /Users/builder/data/lanes/1502/24855232/source /monodroid/src/Mono.Android/platforms/android-21/src/generated/Android.Views.View.cs:1923 07-06 11:47:50.414 I/MonoDroid(13296): 在 Android.Views.View/IOnClickListenerInvoker.n_OnClick_Landroid_view_View_ (intptr,intptr,intptr) [0x00011] 在 /Users/builder/data/lanes/1502/24855232/source /monodroid/src/Mono.Android/platforms/android-21/src/generated/Android.Views.View.cs:1888 07-06 11:47:50.414 I/MonoDroid(13296): at (wrapper dynamic-method) object.84d16582-f149-4133-af10-0f21d61ca331 (intptr,intptr,intptr) 07-06 11:47:50.414 I/MonoDroid(13296):---托管异常堆栈跟踪结束--- 07-06 11:47:50.414 I/MonoDroid(13296): java.lang.ClassCastException: android.widget.LinearLayout 不能转换为 android.support.design.widget.Snackbar$SnackbarLayout 07-06 11:47:50.414 I/MonoDroid(13296): 在 android.support.design.widget.Snackbar.(Snackbar.java:119) 07-06 11:47:50.414 I/MonoDroid(13296): 在 android.support.design.widget.Snackbar.make(Snackbar.java:140) 07-06 11:47:50.414 I/MonoDroid(13296):在 mono.android.view.View_OnClickListenerImplementor.n_onClick(本机方法) 07-06 11:47:50.414 I/MonoDroid(13296): 在 mono.android.view.View_OnClickListenerImplementor.onClick(View_OnClickListenerImplementor.java:29) 07-06 11:47:50.414 I/MonoDroid(13296): 在 android.view.View.performClick(View.java:4754) 07-06 11:47:50.414 I/MonoDroid(13296): 在 android.view.View$PerformClick.run(View.java:19605) 07-06 11:47:50.414 I/MonoDroid(13296): 在 android.os.Handler.handleCallback(Handler.java:733) 07-06 11:47:50.414 I/MonoDroid(13296): 在 android.os.Handler.dispatchMessage(Handler.java:95) 07-06 11:47:50.414 I/MonoDroid(13296):在 android.os.Looper.loop(Looper.java:146) 07-06 11:47:50.414 I/MonoDroid(13296): 在 android.app.ActivityThread.main(ActivityThread.java:5748) 07-06 11:47:50.414 I/MonoDroid(13296): 在 java.lang.reflect.Method.invokeNative(Native Method) 07-06 11:47:50.414 I/MonoDroid(13296): 在 java.lang.reflect.Method.invoke(Method.java:515) 07-06 11:47:50.414 I/MonoDroid(13296): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291) 07-06 11:47:50.414 I/MonoDroid(13296): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107) 07-06 11:47:50.414 I/MonoDroid(13296):在 dalvik.system.NativeStart.main(本机方法) 07-06 11:47:50.419 D/AndroidRuntime(13296): 关闭 VM 07-06 11:47:50.419 W/dalvikvm(13296): threadid=1: 线程以未捕获的异常退出 (group=0x41888c08)

【问题讨论】:

【参考方案1】:

一个简单的清理/重建解决了这个问题。不敢相信几天前这行不通,当时我也尝试过...

【讨论】:

谢谢。也为我工作。

以上是关于Snackbar 问题(仅在调试模式下)的主要内容,如果未能解决你的问题,请参考以下文章

仅在调试模式下生成的 C4715

代码仅在调试模式下执行

仅在 Flutter 的调试模式下运行的应用程序

应用程序仅在调试模式下崩溃

向量下标超出范围,错误仅在调试模式下显示

编译器指令 - 建议 - 仅在调试模式下运行代码