2013-05-27 8 views
8

hinzugefügt wurde Ich bekomme diesen Fehler: hat Fenster com.android.internal.policy.impl.PhoneWindow $ DecorView @ 46029dd0, die ursprünglich hier hinzugefügt wurde Ich habe net Verbindung im Emulator, überprüfen Sie es Browser durch Öffnen von Websites.Aktivität hat Fenster gelaufen [email protected], die ursprünglich hier

Ich bekomme Fehler in der Zeile Prozessdialog.

@SuppressLint("NewApi") 
private class TheTask extends AsyncTask<Void, Void, Void> { 

    @Override 
    protected void onPreExecute() { 
     dialog = ProgressDialog.show(Register.this, "", 
       "Registering... Please wait...", true); 
    } 

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

     request = new SoapObject(NAMESPACE, METHOD_NAME); 

     name = new PropertyInfo(); 
     name.setName("Name"); 
     name.setValue(Name); 
     name.setType(String.class); 
     request.addProperty(name); 

     SoapSerializationEnvelope envp = new SoapSerializationEnvelope(
       SoapEnvelope.VER11); 
     envp.dotNet = true; 
     envp.setOutputSoapObject(request); 
     HttpTransportSE androidHttpTransport = new HttpTransportSE(URL); 
     try { 
      androidHttpTransport.call(SOAP_ACTION, envp); 
      SoapPrimitive response = (SoapPrimitive) envp.getResponse(); 
      Response = response.toString(); 

     } catch (Exception e) { 
      textValidation.setText(e.toString()); 
     } 

     return null; 
    } 

    @Override 
    protected void onPostExecute(Void result) { 

     if (dialog != null) { 
      dialog.dismiss(); 
      dialog = null; 
     } 
     } 
    } 
} 
+0

mögliche Duplikate von [Android: Aktivität hat Fenster aufgrund Fortschrittsdialog geleakt?] (Http://stackoverflow.com/questions/16165810/android-activity-has-leaked-window-due-to-progress-dialog) – Raghunandan

+0

Bitte ändern Sie "Void" zu "void" – Pragnani

+2

.. Void ist richtig. – buptcoder

Antwort

48

Dieser Fehler tritt auf, wenn Ihre Aktivität zerstört wurde, aber Ihr Dialog immer noch angezeigt wird. Sie haben also diesen Code in Ihrer Aktivität der onDestroy()

@Override 
public void onDestroy() { 
    super.onDestroy(); 
    if (dialog != null) { 
     dialog.dismiss(); 
     dialog = null; 
    } 
} 
+0

App stürzte ab Ich versuchte, das UI-Element von doInBackground zu aktualisieren. –

+0

U kann die Benutzeroberfläche nicht von einem anderen Hintergrundthread aus ändern. Versuchen Sie, von postExecute – vicky

+0

Rite, Vivek zu ändern. Aber warum funktioniert es, wenn ich keine Daten an meinen lokalen Computer sende. Ich habe es zum Hauptserver meiner Firma geändert und nur diese Zeit habe ich diesen Fehler bekommen. –

2

Möglicherweise Seine hinzugefügt Deinetwegen

textValidation.setText(e.toString()); 

innerhalb der Funktion,

doInBackground() 

schreiben, das ist Aktualisieren der Benutzeroberfläche, die ist erlaubt durch android in doInBackground() Methode. Also irgendwie, wenn Sie diese Zeile setzen in

PostExecute()

dann erhalten dieses Problem gelöst.

+0

Okay, es ist ma vielen Dank – Arslan