BadTokenException甚至在Activity的Context上

时间:2015-02-14 16:32:25

标签: android

我已根据建议使用Activity的上下文初始化了progressDialog,但仍有很多应用程序崩溃了#34; BadTokenException错误"。

错误日志:

02-14 21:20:40.318: E/AndroidRuntime(17548): FATAL EXCEPTION: main 02-14 21:20:40.318: E/AndroidRuntime(17548): Process: com.xyz.abx.app, PID: 17548 02-14 21:20:40.318: E/AndroidRuntime(17548): android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@1494d8e8 is not valid; is your activity running? 02-14 21:20:40.318: E/AndroidRuntime(17548): at android.view.ViewRootImpl.setView(ViewRootImpl.java:562) 02-14 21:20:40.318: E/AndroidRuntime(17548): at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:272) 02-14 21:20:40.318: E/AndroidRuntime(17548): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69) 02-14 21:20:40.318: E/AndroidRuntime(17548): at android.app.Dialog.show(Dialog.java:298) 02-14 21:20:40.318: E/AndroidRuntime(17548): at com.payumoney.appower.app.PaymentWebView$2.onPageStarted(PaymentWebView.java:86) 02-14 21:20:40.318: E/AndroidRuntime(17548): at com.android.webview.chromium.WebViewContentsClientAdapter.onPageStarted(WebViewContentsClientAdapter.java:484) 02-14 21:20:40.318: E/AndroidRuntime(17548): at com.android.org.chromium.android_webview.AwContentsClientCallbackHelper$MyHandler.handleMessage(AwContentsClientCallbackHelper.java:107) 02-14 21:20:40.318: E/AndroidRuntime(17548): at android.os.Handler.dispatchMessage(Handler.java:102) 02-14 21:20:40.318: E/AndroidRuntime(17548): at android.os.Looper.loop(Looper.java:135) 02-14 21:20:40.318: E/AndroidRuntime(17548): at android.app.ActivityThread.main(ActivityThread.java:5221) 02-14 21:20:40.318: E/AndroidRuntime(17548): at java.lang.reflect.Method.invoke(Native Method) 02-14 21:20:40.318: E/AndroidRuntime(17548): at java.lang.reflect.Method.invoke(Method.java:372) 02-14 21:20:40.318: E/AndroidRuntime(17548): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 02-14 21:20:40.318: E/AndroidRuntime(17548): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)

此处发生崩溃:

@Override
        public void onPageStarted(WebView view, String url, Bitmap favicon)
        {
            super.onPageStarted(view,url,favicon);
                if (!progress.isShowing()&PaymentWebView.class!=null)           {
                    progress.show();
                }
        }

并在oncreate中初始化:

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_payment_web_view);

    progress = new ProgressDialog(this);
    progress.setMessage("Please wait");

    mWebview = (WebView)findViewById(R.id.paymentWebView);
    mWebview.getSettings().setJavaScriptEnabled(true);
    imm = (InputMethodManager)this.getSystemService(Context.INPUT_METHOD_SERVICE);
    Bundle extras = getIntent().getExtras();
    mWebview.getSettings().setJavaScriptEnabled(true);
    mWebview.getSettings().setDomStorageEnabled(true);

`

我还使用了Activity.this和getapplicationcontext而没有任何结果。当上下文正常时,请建议在progressdialog上使用badtokenexception崩溃的内容。输入代码

2 个答案:

答案 0 :(得分:1)

谢谢你们,以下为我工作:

@Override
    public void onPageStarted(WebView view, String url, Bitmap favicon)
    {
        super.onPageStarted(view,url,favicon);
            if (!progress.isShowing()&PaymentWebView.class!=null&!isFinishing)           {
                progress.show();
            }
    }

if(!isFinishing)条件阻止.show()执行,当出于任何原因,Activity的对象丢失了上下文。如果我发现当活动在前台并且用户正在与webview交互时,为什么上下文丢失,我也会更新这个。

净结果:在webview中导航的某些页面上没有显示progressdialog。(我认为之前发生了崩溃)

请参阅:Android : BadTokenException when I want to show a progresssDialog a second time

答案 1 :(得分:0)

将对话框逻辑移动到活动的onResume方法,当调用onCreate时,活动尚未运行,并且会导致错误的异常。

希望有所帮助。