gpt4 book ai didi

android - 属于项目类的 BadTokenException

转载 作者:太空宇宙 更新时间:2023-11-03 11:54:33 24 4
gpt4 key购买 nike

我正在尝试在 API 25 中运行我的应用程序,但是当我点击按钮时出现此错误:

E/ACRA: ACRA caught a BadTokenException for com.safa.visit.ts.debug
android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@2fc535e is not valid; is your activity running?
at android.view.ViewRootImpl.setView(ViewRootImpl.java:922)
at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:377)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:105)
at android.widget.Toast$TN.handleShow(Toast.java:747)
at android.widget.Toast$TN$2.handleMessage(Toast.java:622)
at android.os.Handler.dispatchMessage(Handler.java:102)
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:1563)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1451)
Disconnected from the target VM, address: 'localhost:8600', transport: 'socket'

我搜索了一下,发现这个问题是针对 Toast 的。因为 toast 上下文可能是 NULL。为此,我在显示上下文之前检查了上下文。这是我的方法:

    private void toastError(Context ctx,final String msg) {
if (ctx != null)
Toast.makeText(ctx, msg, Toast.LENGTH_SHORT).show();
}

我的问题是,我不知道这个错误是针对哪个页面或类的,因为那个地方,我点击按钮的地方出现了这个错误,我把我的方法放在那里并使用了我的方法而不是 Toast 但是我仍然遇到这个错误。

你能给我什么建议?

最佳答案

我已经创建了一个库来 Hook 修复这个BadTokenException:

https://github.com/drakeet/ToastCompat

只需使用:

ToastCompat.makeText(context, "hello world!", Toast.LENGTH_SHORT).show();

或者使用 BadTokenListener#onBadTokenCaught(@NonNull Toast toast):

ToastCompat.makeText(this, "hello", Toast.LENGTH_SHORT)
.setBadTokenListener(toast -> {
...
}).show();

为什么异常:https://github.com/drakeet/ToastCompat#why

关于android - 属于项目类的 BadTokenException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47548317/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com