2013-05-27 26 views
8

Tôi nhận được lỗi này: đã bị rò rỉ cửa sổ com.android.internal.policy.impl.PhoneWindow $ DecorView @ 46029dd0 ban đầu được thêm vào đây Tôi có kết nối mạng trong trình mô phỏng, kiểm tra trình duyệt bằng cách mở trang web.Hoạt động đã bị rò rỉ cửa sổ [email protected] ban đầu được thêm vào đây

Tôi gặp lỗi tại dòng 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

bản sao có thể có của [Android: hoạt động đã bị rò rỉ cửa sổ do hộp thoại tiến trình?] (Http://stackoverflow.com/questions/16165810/android-activity-has-leaked-window-due-to-progress-dialog) – Raghunandan

+0

hãy thay đổi 'Void' thành' void' – Pragnani

+2

.. Void là đúng. – buptcoder

Trả lời

48

Lỗi này sẽ xảy ra nếu hoạt động của bạn đã bị hủy nhưng hộp thoại vẫn hiển thị. Vì vậy, Bạn đã thêm các mã trong của hoạt động của bạn onDestroy()

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

Ứng dụng bị lỗi, tôi đang cố gắng cập nhật phần tử giao diện người dùng từ doInBackground. –

+0

U không thể thay đổi giao diện người dùng từ chuỗi nền khác. Thử thay đổi từ postExecute – vicky

+0

nghi thức, vivek. Nhưng sau đó tại sao nó hoạt động khi tôi không gửi dữ liệu đến máy chủ cục bộ của máy tính. Tôi đã thay đổi nó thành máy chủ chính của công ty tôi và thời gian đó, tôi gặp lỗi này. –

2

Có thể nó Bởi vì bạn đang viết

textValidation.setText(e.toString()); 

bên trong hàm,

doInBackground() 

đó là cập nhật giao diện người dùng được android cho phép trong phương thức doInBackground(). Vì vậy, bằng cách nào đó nếu bạn đặt dòng này trong

postExecute()

thì vấn đề này sẽ được giải quyết.

+0

Được rồi có ma cảm ơn rất nhiều – Arslan

Các vấn đề liên quan