2012-07-21 7 views
18
inviteBu.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      if(ChoiceList.size()>0) 
      { 

        LayoutInflater factory = LayoutInflater.from(MobileConnectActivity.this); 
        final View textEntryView = factory.inflate(R.layout.invite_dialog, null); 
        final EditText et =(EditText) textEntryView.findViewById(R.id.usercontent_edit); 

        dia= new AlertDialog.Builder(MobileConnectActivity.this) 
         .setTitle(getString(R.string.invite_input_content)) 
         .setView(textEntryView) 
         .setPositiveButton(getString(R.string.invite_send), new DialogInterface.OnClickListener() { 
          public void onClick(final DialogInterface dialog, int whichButton) { 
           dialog.dismiss(); 
           if(et.getText().toString()==null && et.getText().equals("")) 
           { 
            Toast.makeText(getApplicationContext(), getString(R.string.invite_content_check), Toast.LENGTH_SHORT).show(); 
           } 
           else{ 


            new AsyncTask<Void, Void, String>() { 

             CustomDialog mProgressBar = new CustomDialog(MobileConnectActivity.this, R.style.dialog); 

             protected void onPreExecute() { 

              mProgressBar.show(); 
             }; 

             protected void onCancelled() { 
              mProgressBar.hide(); 
             }; 

             @Override 
             protected String doInBackground(Void... params) { 

               ChoiceList=removeDuplicateList(ChoiceList); 
               for(int i=0;i<ChoiceList.size();i++) 
               { 
                Log.i("aaa",""+ChoiceList.get(i)); 
                sendSMS(ChoiceList.get(i), et.getText().toString()); 
               } 
              return "OK"; 
             } 

             protected void onPostExecute(String response) { 
              mProgressBar.hide(); 

              if (response != null) { 

               Toast.makeText(getApplicationContext(), getString(R.string.invite_succeed), Toast.LENGTH_SHORT).show(); 
               Intent intent = new Intent(); 
                intent.setClass(MobileConnectActivity.this, inviteMainActivity.class); 
                startActivity(intent); 

               MobileConnectActivity.this.finish(); 
              } else { 
               //mHelper.showResponseErrorMessage(response); 
               Intent intent = new Intent(); 
               intent.setClass(MobileConnectActivity.this, inviteMainActivity.class); 
               startActivity(intent); 
               finish(); 
              } 

             }; 

            }.execute(); 

           } 

          } 
         }) 
         .setNegativeButton(getString(R.string.invite_cancel), new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog, int whichButton) { 

           /* User clicked cancel so do some stuff */ 
          } 
         }).show(); 

      } 
      else 
      { 
       Toast.makeText(getApplicationContext(), getString(R.string.invite_choice_check), Toast.LENGTH_SHORT).show(); 
      } 
     } 
    }); 

mi dà:android.view.WindowLeaked

07-21 03:36:24.519: E/WindowManager(23240): Activity com.portaura.myaura.invite.MobileConnectActivity has leaked window [email protected] that was originally added here 
07-21 03:36:24.519: E/WindowManager(23240): android.view.WindowLeaked: Activity com.portaura.myaura.invite.MobileConnectActivity has leaked window [email protected] that was originally added here 
07-21 03:36:24.519: E/WindowManager(23240):  at android.view.ViewRoot.<init>(ViewRoot.java:266) 
07-21 03:36:24.519: E/WindowManager(23240):  at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:174) 
07-21 03:36:24.519: E/WindowManager(23240):  at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:117) 
07-21 03:36:24.519: E/WindowManager(23240):  at android.view.Window$LocalWindowManager.addView(Window.java:424) 
07-21 03:36:24.519: E/WindowManager(23240):  at android.app.Dialog.show(Dialog.java:241) 
07-21 03:36:24.519: E/WindowManager(23240):  at com.portaura.myaura.invite.MobileConnectActivity$3$1$1.onPreExecute(MobileConnectActivity.java:161) 
07-21 03:36:24.519: E/WindowManager(23240):  at android.os.AsyncTask.execute(AsyncTask.java:391) 
07-21 03:36:24.519: E/WindowManager(23240):  at com.portaura.myaura.invite.MobileConnectActivity$3$1.onClick(MobileConnectActivity.java:201) 
07-21 03:36:24.519: E/WindowManager(23240):  at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:165) 
07-21 03:36:24.519: E/WindowManager(23240):  at android.os.Handler.dispatchMessage(Handler.java:99) 
07-21 03:36:24.519: E/WindowManager(23240):  at android.os.Looper.loop(Looper.java:130) 
07-21 03:36:24.519: E/WindowManager(23240):  at java.lang.reflect.Method.invokeNative(Native Method) 
07-21 03:36:24.519: E/WindowManager(23240):  at java.lang.reflect.Method.invoke(Method.java:507) 
+2

Si prega di contrassegnare la risposta accettata se ha aiutato. Grazie –

risposta

72

finestra Eccezioni trapelate sono di solito causati da finestre di dialogo che non sono respinto in modo corretto. Ad esempio, se si prevede di chiudere una finestra di dialogo in Onpostexecute di asynctask e l'attività che lo ha creato è terminata, si verificherà una perdita di finestra. Assicurati di aver dimisss il dialogo in onPause dell'attività.

+1

@pengwang Non è questa la risposta? – samosaris

+1

questo metodo ha funzionato per me, grazie per le spiegazioni. – AuroraBlaze

+0

buona risposta .. funzionante. –

2

scia se ti manca questo codice: mProgressDialog.dismis(); che il tempo potrebbe essere che si riceverà questo tipo di errore.

8

Verificare se si sta utilizzando la funzione finish() prima della funzione mDialog.show(). Se è rimuovere il finish() e aggiungerlo dopo lo show().

5

Ogniqualvolta si avvia una ProgressDialog, è necessario chiuderla correttamente dopo aver eseguito l'attività in background o addirittura annullare l'attività in background. Così,

invece di mProgressBar.hide(); uso mProgressBar.dismiss();

non sarà possibile ottenere l'errore android.view.WindowLeaked

speranza che questo aiuta