Android.views.windowmanagerbadtokenexception:无法添加窗口 - 令牌android.os.binderproxy [英] Android.views.windowmanagerbadtokenexception: unable to add window -- token android.os.binderproxy

查看:119
本文介绍了Android.views.windowmanagerbadtokenexception:无法添加窗口 - 令牌android.os.binderproxy的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用xamarin开发一个Android应用程序。



我正在创建类似于Android Toast.MakeText()的自定义Toast消息。请参阅下面的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 .GetAbsoluteGravit y((GravityFlags.CenterHorizo​​ntal | 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.Horizo​​ntalGravityMask)= = GravityFlags.FillHorizo​​ntal)

{

@ params.Horizo​​ntalWeight = 1.0f;

}



if((@ params.Gravity& Gr avityFlags.VerticalGravityMask)== GravityFlags.FillVertical)

{

@ params.VerticalWeight = 1.0f;

}



试试

{

activity.WindowManager.AddView(msg.MView,@ params);

}

catch(System.Exception ex)

{

}



在向Windowmanager添加视图时,我收到以下异常



{Android.Views.WindowManagerBadTokenException:无法添加窗口 - 令牌android.os.BinderProxy@901e8d6是无效;你的活动是在运行吗?

在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()[0x0000c] in:0

at Java.Interop.JniEnvironment + InstanceMethods.CallVoidMethod( Java.Interop.JniObjectReference实例,Java.Interop.JniMethodInfo方法,Java.Interop.JniArgumentValue * args)[0x00069] in< 3cb12bce834a498199b2be6cd3e00922>:0

at Android.Runtime.JNIEnv.CallVoidMethod(System .IntPtr jobject,System.IntPtr jmethod,Android.Runtime.JValue * parms)[0x0000e] in:0

at Android.Views.IWindowManagerInvoker.AddView(Android.Views.View view,Android.Views .ViewGroup + LayoutParams params)[0x0007c] in:0
$ b / b at GSP.Phone.Controls.ToastCompat +<> c__DisplayClass11_0.b__0()[0x00162] ToastCompat.cs:152

---托管Android.Views.WindowManagerBadTokenException结束栈跟踪---

android.view.WindowManager $ BadTokenException:无法添加窗口 - 令牌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_run(原生方法)

at 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)

at java.lang.reflect.Method.invoke(Native Method)

at com.android.internal。 os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1557)

at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1445)

}



似乎在将令牌分配给窗口管理器par时ams是问题所在。我是否将正确的令牌值(activity.Window.Attributes.Token)分配给窗口管理器参数?



请帮我解决如何解决Android.Views.WindowManagerBadTokenException < br $> b $ b

谢谢,

K.Nagendra Babu



什么我试过了:



我试图创建类似Android Toast消息的自定义Toast消息但是在向WindowManager添加视图时抛出Android.Views.WindowManagerBadTokenException

解决方案

BadTokenException:无法添加窗口 - 令牌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_run(原生方法)

at 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)

at java.lang.reflect.Method.invoke(Native Method)

at com.android.internal。 os.ZygoteInit


MethodAndArgsCaller.run(ZygoteInit.java:1557)

at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1445 )

}



在我分配时似乎e令牌到窗口管理器参数是问题所在。我是否将正确的令牌值(activity.Window.Attributes.Token)分配给窗口管理器参数?



请帮我解决如何解决Android.Views.WindowManagerBadTokenException < br $> b $ b

谢谢,

K.Nagendra Babu



什么我试过了:



我试图创建类似Android Toast消息的自定义Toast消息但是在向WindowManager添加视图时抛出Android.Views.WindowManagerBadTokenException

I am developing an android application using xamarin.

I am creating custom toast messages similar to android Toast.MakeText().please see my c#.net below code

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)
{
}

While adding the view to Windowmanager I am getting the following exception

{Android.Views.WindowManagerBadTokenException: Unable to add window -- token android.os.BinderProxy@901e8d6 is not valid; is your activity running?
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in :0
at Java.Interop.JniEnvironment+InstanceMethods.CallVoidMethod (Java.Interop.JniObjectReference instance, Java.Interop.JniMethodInfo method, Java.Interop.JniArgumentValue* args) [0x00069] in <3cb12bce834a498199b2be6cd3e00922>:0
at Android.Runtime.JNIEnv.CallVoidMethod (System.IntPtr jobject, System.IntPtr jmethod, Android.Runtime.JValue* parms) [0x0000e] in :0
at Android.Views.IWindowManagerInvoker.AddView (Android.Views.View view, Android.Views.ViewGroup+LayoutParams params) [0x0007c] in :0
at GSP.Phone.Controls.ToastCompat+<>c__DisplayClass11_0.b__0 () [0x00162] in ToastCompat.cs:152
--- End of managed Android.Views.WindowManagerBadTokenException stack trace ---
android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@901e8d6 is not valid; is your activity running?
at android.view.ViewRootImpl.setView(ViewRootImpl.java:920)
at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:377)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:105)
at mono.java.lang.RunnableImplementor.n_run(Native Method)
at mono.java.lang.RunnableImplementor.run(RunnableImplementor.java:30)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6823)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1557)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1445)
}

seems to me while assigning the token to window manager params is the problem. am I assigning the right token value(activity.Window.Attributes.Token) to window manager params?

Please help me how to resolve the Android.Views.WindowManagerBadTokenException

Thank you,
K.Nagendra Babu

What I have tried:

I tried to create custom toast messages similar android Toast messages but while adding the view to WindowManager it throwing Android.Views.WindowManagerBadTokenException

解决方案

BadTokenException: Unable to add window -- token android.os.BinderProxy@901e8d6 is not valid; is your activity running?
at android.view.ViewRootImpl.setView(ViewRootImpl.java:920)
at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:377)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:105)
at mono.java.lang.RunnableImplementor.n_run(Native Method)
at mono.java.lang.RunnableImplementor.run(RunnableImplementor.java:30)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6823)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit


MethodAndArgsCaller.run(ZygoteInit.java:1557)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1445)
}

seems to me while assigning the token to window manager params is the problem. am I assigning the right token value(activity.Window.Attributes.Token) to window manager params?

Please help me how to resolve the Android.Views.WindowManagerBadTokenException

Thank you,
K.Nagendra Babu

What I have tried:

I tried to create custom toast messages similar android Toast messages but while adding the view to WindowManager it throwing Android.Views.WindowManagerBadTokenException


这篇关于Android.views.windowmanagerbadtokenexception:无法添加窗口 - 令牌android.os.binderproxy的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆