C# Android.views.WindowManagerBadtokenexException:无法添加窗口--标记Android.os.binderproxy

C# Android.views.WindowManagerBadtokenexException:无法添加窗口--标记Android.os.binderproxy,c#,android,xamarin,C#,Android,Xamarin,我正在使用Xamarin开发一个android应用程序 我正在创建类似于android的自定义toast消息toast.MakeText()。检查下面我的C#.NET代码: var @params = new WindowManagerLayoutParams( ViewGroup.LayoutParams.WrapContent, ViewGroup.LayoutParams.WrapContent, WindowManagerTypes.Toast, Wind

我正在使用Xamarin开发一个android应用程序

我正在创建类似于android的自定义toast消息
toast.MakeText()
。检查下面我的C#.NET代码:

var @params = new WindowManagerLayoutParams(
    ViewGroup.LayoutParams.WrapContent,
    ViewGroup.LayoutParams.WrapContent,
    WindowManagerTypes.Toast,
    WindowManagerFlags.NotFocusable | WindowManagerFlags.NotTouchable,
    Android.Graphics.Format.Translucent);

Android.Content.Res.Configuration config = activity.Resources.Configuration;

@params.Gravity = Gravity.GetAbsoluteGravity((GravityFlags.CenterHorizontal | GravityFlags.Bottom), (GravityFlags)config.LayoutDirection);
@params.X = 0;
@params.Y = (int)TypedValue.ApplyDimension(ComplexUnitType.Dip, 64f, activity.Resources.DisplayMetrics);
@params.WindowAnimations = Android.Resource.Style.AnimationToast;
@params.PackageName = activity.PackageName;
@params.Token = activity.Window.Attributes.Token;

if ((@params.Gravity & GravityFlags.HorizontalGravityMask) == GravityFlags.FillHorizontal)
{
    @params.HorizontalWeight = 1.0f;
}

if ((@params.Gravity & GravityFlags.VerticalGravityMask) == GravityFlags.FillVertical)
{
    @params.VerticalWeight = 1.0f;
}

try
{
    activity.WindowManager.AddView(msg.MView, @params);
}
catch(System.Exception ex)
{
}
将视图添加到
Windowmanager
时,我遇到以下异常:

{Android.Views.WindowManagerBadtokenexException:无法添加窗口--标记Android.os。BinderProxy@901e8d6无效;您的活动正在运行吗? 0中的System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()[0x0000c]处 在Java.Interop.JniEnvironment+InstanceMethods.CallVoidMethod(Java.Interop.JniObjectReference实例,Java.Interop.JniMethodInfo方法,Java.Interop.JniArgumentValue*args)[0x00069]中:0 在Android.Runtime.JNIEnv.CallVoidMethod(System.IntPtr jobject,System.IntPtr jmethod,Android.Runtime.JValue*parms)[0x0000e]中:0 在Android.Views.IWindowManagerInvoker.AddView(Android.Views.View视图,Android.Views.ViewGroup+layoutparms参数)[0x0007c]中:0 在GSP.Phone.Controls.ToastCompat+c_uu中,在ToastCompat.cs:152中显示Class11_0.b_u0()[0x00162] ---托管Android.Views.WindowManagerBadtokenexException堆栈跟踪结束--- android.view.WindowManager$BadTokenException:无法添加Windows--token android.os。BinderProxy@901e8d6无效;您的活动正在运行吗? 在android.view.ViewRootImpl.setView(ViewRootImpl.java:920) 在android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:377) 在android.view.WindowManagerImpl.addView(WindowManagerImpl.java:105) 在mono.java.lang.RunnableImplementor.n_运行(本机方法) 位于mono.java.lang.RunnableImplementor.run(RunnableImplementor.java:30) 位于android.os.Handler.handleCallback(Handler.java:751) 位于android.os.Handler.dispatchMessage(Handler.java:95) 位于android.os.Looper.loop(Looper.java:154) 位于android.app.ActivityThread.main(ActivityThread.java:6823) 位于java.lang.reflect.Method.invoke(本机方法) 在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1557)上 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1445) }


在我看来,将令牌分配给窗口管理器参数是个问题。我是否将正确的标记值(activity.Window.Attributes.token)分配给窗口管理器参数?

我设置了该条件

if (!((Activity)context).IsFinishing)
{
   //Posted code
}

《撞车事件》现在没有出现

感谢您编辑我的帖子@Lauren Van Sloun