web-dev-qa-db-ja.com

アクティビティがリークしましたウィンドウcom.Android.internal.policy.impl.PhoneWindow$DecorView@46029dd0元々ここに追加されました

このエラーが発生します:元々ここに追加されたウィンドウcom.Android.internal.policy.impl.PhoneWindow$DecorView@46029dd0がリークしましたエミュレータにネット接続があります。ウェブサイトを開いてブラウザをチェックしてください。

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;
        }
        }
    }
}
8
Jeeten Parmar

このエラーは、アクティビティが破棄されてもダイアログが表示されている場合に発生します。したがって、これらのコードをアクティビティのonDestroy()に追加しました

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

おそらくあなたが書いているので

textValidation.setText(e.toString());

関数内

doInBackground()

doInBackground()メソッドのAndroidで許可されているUIを更新しています。この行を入力するとどういうわけか

postExecute()

その後、この問題は解決されます。

2
Lalit Jawale