2013-05-27 1 views
8

이 오류가 나타납니다. 창문이 유출되었습니다. com.android.internal.policy.impl.PhoneWindow $ DecorView @ 원래 여기에 추가 된 46029dd0 에뮬레이터에서 인터넷 연결이 있습니다. 웹 사이트를 열어 브라우저를 확인하십시오.활동이 창을 유출했습니다. [email protected] 원래 여기에 추가되었습니다.

processdialog 줄에 오류가 발생했습니다.

@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

[Android : activity가 진행 대화 상자로 인해 창을 새겼습니까?] (http://stackoverflow.com/questions/16165810/android-activity-has-leaked-window-due-to-progress-dialog) – Raghunandan

+0

'void '를'void'로 변경하십시오 – Pragnani

+2

.. 무효입니다. – buptcoder

답변

48

이 오류는 활동이 파괴되었지만 대화 상자가 계속 표시 될 때 발생합니다. 당신이

doInBackground() 

입니다

기능 내부
textValidation.setText(e.toString()); 

를 작성의 때문에 그래서 당신은 당신의 활동의 onDestroy()

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

응용 프로그램이 충돌하여 UI 요소를 doInBackground에서 업데이트하려고했습니다. –

+0

U 다른 백그라운드 스레드에서 UI를 변경할 수 없습니다. postExecute – vicky

+0

rite, vivek에서 변경해보십시오. 그러나 컴퓨터의 로컬 서버에 데이터를 보내지 않을 때 작동하는 이유는 무엇입니까? 내 회사의 메인 서버로 변경했으며 그 당시에 만이 오류가 발생했습니다. –

2

아마도 그것의에이 코드를 추가 한 업데이트중인 UI doInBackground() 메소드에서 android에 의해 허용됩니다. 그래서 어떻게 든 당신이

postExecute()

다음이 문제가 해결 얻을 것이다이 줄을 추가합니다.

+0

좋아, 그것 ma 고마워요 많게 얻었다 – Arslan