【问题标题】:Unable to add window - token android.os.BinderProxy is not valid; is your activity running?无法添加窗口 - 令牌 android.os.BinderProxy 无效;您的活动正在运行吗?
【发布时间】:2014-08-21 23:01:45
【问题描述】:

我尝试使用 twitter4j 连接到 Twitter。但它显示了标题所说的错误。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);

    twitterConsumerKey = getIntent().getStringExtra(TWITTER_CONSUMER_KEY);
    twitterConsumerSecret = getIntent().getStringExtra(TWITTER_CONSUMER_SECRET);
    if(twitterConsumerKey == null || twitterConsumerSecret == null){
        Log.e(Constants.TAG, "ERROR: Consumer Key and Consumer Secret required!");
        Login.this.setResult(TWITTER_LOGIN_RESULT_CODE_FAILURE);
        Login.this.finish();
    }

    mProgressDialog = new ProgressDialog(this);
    mProgressDialog.setMessage("Please wait...");
    mProgressDialog.setCancelable(false);
    mProgressDialog.setCanceledOnTouchOutside(false);
    mProgressDialog.show();

    twitterLoginWebView = (WebView)findViewById(R.id.twitter_login_web_view);
    twitterLoginWebView.setWebViewClient( new WebViewClient()
    {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url)
        {
            if( url.contains(Constants.TWITTER_CALLBACK_URL))
            {
                Uri uri = Uri.parse(url);
                Login.this.saveAccessTokenAndFinish(uri);
                return true;
            }
            return false;
        }

        @Override
        public void onPageFinished(WebView view, String url) {
            // TODO Auto-generated method stub
            super.onPageFinished(view, url);
            if(mProgressDialog != null) mProgressDialog.dismiss();
        }

        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            // TODO Auto-generated method stub
            super.onPageStarted(view, url, favicon);

            if(mProgressDialog != null) mProgressDialog.show();
        }
    });

    Log.d(Constants.TAG, "ASK OAUTH");
    askOAuth();
}

这里是 LogCat:

FATAL EXCEPTION: main
android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@41f93f30 is not valid; is your activity running?
at android.view.ViewRootImpl.setView(ViewRootImpl.java:559)
at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:269)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)
at android.app.Dialog.show(Dialog.java:281)
at com.moviecollection.Login$1.onPageStarted(Login.java:93)
at android.webkit.CallbackProxy.handleMessage(CallbackProxy.java:305)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5295)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555)
at dalvik.system.NativeStart.main(Native Method)

错误行是if(mProgressDialog != null) mProgressDialog.show();

我尝试了Unable to add window — token android.os.BinderProxy is not valid; is your activity running?介绍的方式。但它对我的安卓版本来说太旧了。

【问题讨论】:

  • 请贴出logcat并指出是哪一行导致了错误。

标签: android progressdialog


【解决方案1】:

我今天犯了和你一样的错误,在你要显示对话框之前,把这段代码写在下面:

    if(((Activity) context).isFinishing())
    {
       return;
    }

它对我有用。祝你好运~

【讨论】:

    【解决方案2】:

    使用 swtAllertDialogBox 也犯了同样的错误。这段代码帮助我避免崩溃

    if(!((Activity) context ).isFinishing())
    {
        swtDialogSucces();
    }else{
        Toast.makeText(getApplicationContext(),"Successful", Toast.LENGTH_LONG).show();
    }
    

    【讨论】:

      【解决方案3】:

      使用这个条件。

      if(mProgressDialog != null && mProgressDialog.isShowing()) 
       mProgressDialog.show();
      

      可能有一种我想不出的更简单的方法,但一种方法是自己实现它。在 onResume() 上设置成员变量 mIsRunning = true,在 onPause() 上设置回 mIsRunning = false。使用此布尔值,您应该知道不要在回调中调用 alert.show()。

      希望这会对你有所帮助。

      【讨论】:

      • 解决不了他的问题。他需要检查活动是否正在运行
      猜你喜欢
      • 2014-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-03
      相关资源
      最近更新 更多