错误:查看不附加到窗口pipe理器

我从客户端远程获取以下内容,所以我不知道他们正在使用什么硬件等。

java.lang.IllegalArgumentException: View not attached to window manager at android.view.WindowManagerImpl.findViewLocked(WindowManagerImpl.java:355) at android.view.WindowManagerImpl.removeView(WindowManagerImpl.java:200) at android.view.Window$LocalWindowManager.removeView(Window.java:417) at android.app.Dialog.dismissDialog(Dialog.java:279) at android.app.Dialog.access$000(Dialog.java:72) at android.app.Dialog$1.run(Dialog.java:108) at android.app.Dialog.dismiss(Dialog.java:263) at com..mysite.android.ActivityGame$1.onFinish(ActivityGame.java:154) at android.os.CountDownTimer$1.handleMessage(CountDownTimer.java:118) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:123) at android.app.ActivityThread.main(ActivityThread.java:4203) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:521) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:799) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557) 

这是由于ProgressDialog发生的

  progressDialog = new ProgressDialog( this ); progressDialog.setMessage(getString(R.string.get_ready)); progressDialog.setCancelable(false); progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); progressDialog.setMax(12); progressDialog.show(); new CountDownTimer(3000, 250) { @Override public void onTick(long millisUntilFinished) { //progressDialog.incrementProgressBy(1); } @Override public void onFinish() { progressDialog.dismiss(); //********* ERROR HAPPENS HERE ********* nextQuestion(); } }.start(); 

这个Activity在Manifest中看起来像这样。

 <activity android:theme="@style/GameTheme" android:name=".ActivityGame" android:screenOrientation="portrait" android:launchMode="singleTask" android:configChanges="keyboardHidden|orientation"></activity> 

那么这意味着什么呢? 我认为这与活动被破坏然后创build,但你可以看到我有configChanges设置正确。

Solutions Collecting From Web of "错误:查看不附加到窗口pipe理器"

尝试:

 if (pDialog.isShowing()) { pDialog.cancel(); } 

在您重写的onDestroy()onStop()方法中。

尝试在退出Activity后显示对话框时出现此问题。

我只是写下下面的代码就解决了这个问题:

 public void onDestroy(){ super.onDestroy(); if(progressDialog!=null) if(progressDialog.isShowing()){ progressDialog.cancel(); } } 

基本上,你从哪个类开始progressDialog ,重写onDestroy()方法并且这样做。 它解决了Activity泄漏窗口的问题。

这通常发生在活动结束后致电解雇。

为了处理不可见视图,你不能使用isShowing(),并应该检查你的onDestroy()中的窗口附件本身,

 if (pDialog.getWindowToken() != null) { pDialog.dismiss(); } 

或者在我的情况下,我没有使用对话框,而是由WindowManager添加的自定义窗口,它可能是(不可见的)。

 if (test_service_overlay != null) { if (test_service_overlay.getWindowToken() != null) { WindowManager windowManager = (WindowManager) getBaseContext().getSystemService(Context.WINDOW_SERVICE); windowManager.removeViewImmediate(test_service_overlay); } } 

当我试图closuresWeb视图的onPageFinished方法的对话框时,我也面临同样的问题。 有时在活动closures后调用onPageFinished。

这是它的解决scheme:

  if(pDialog.isShowing()) { try { pDialog.dismiss(); } catch(Exception e) {// nothing } } 

尝试一下!

你也可以问“dialog.isIndeterminate()”。 工作正常。