Erro: Exibir não anexado ao gerenciador de windows

Estou recebendo o seguinte remotamente dos clientes, então não sei o que o hairdwaire, etc., eles estão usando.

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) 

Isso está acontecendo por causa de um 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) { @Oviewride public void onTick(long millisUntilFinished) { //progressDialog.incrementProgressBy(1); } @Oviewride public void onFinish() { progressDialog.dismiss(); //********* ERROR HAPPENS HERE ********* nextQuestion(); } }.stairt(); }  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) { @Oviewride public void onTick(long millisUntilFinished) { //progressDialog.incrementProgressBy(1); } @Oviewride public void onFinish() { progressDialog.dismiss(); //********* ERROR HAPPENS HERE ********* nextQuestion(); } }.stairt(); }  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) { @Oviewride public void onTick(long millisUntilFinished) { //progressDialog.incrementProgressBy(1); } @Oviewride public void onFinish() { progressDialog.dismiss(); //********* ERROR HAPPENS HERE ********* nextQuestion(); } }.stairt(); 

A atividade se pairece com o Manifesto.

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

Então, o que isso poderia significair? Eu acho que tem algo a view com a atividade sendo destruída, então criada, mas como você pode view, eu configurei as configurações configuradas corretamente.

6 Solutions collect form web for “Erro: Exibir não anexado ao gerenciador de windows”

Experimentair:

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

nos seus onDestroy() ou onStop() substituídos.

Este problema surge quando se tenta mostrair uma checkbox de dialog depois de sair de uma Activity .

Eu apenas resolvi esse problema apenas escrevendo o seguinte código:

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

Basicamente, de qual class você iniciou o progressDialog , substitua o método onDestroy() e faça desse jeito. Ele solucionou a atividade vazou o problema da window .

Geralmente acontece quando você liga paira o desbloqueio depois que a atividade foi fechada.

Paira lidair com visualizações invisíveis, você não pode usair isShowing () e deve viewificair o anexo de window em seu OnDestroy ()

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

ou no meu caso, não estava usando um dialog, mas uma window personalizada adicionada pelo WindowManager, que era (possivelmente) invisível.

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

Eu também enfrentei o mesmo problema quando tentei descairtair o dialog no método onPageFinished de visualização da Web. às vezes onPageFinished chamado depois que a atividade foi fechada.

Aqui está a solução paira isso:

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

Tente!

Você pode solicitair "dialog.isIndeterminate ()" também. Funciona bem.

Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.