このエラーが発生します:元々ここに追加されたウィンドウ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;
}
}
}
}
このエラーは、アクティビティが破棄されてもダイアログが表示されている場合に発生します。したがって、これらのコードをアクティビティのonDestroy()
に追加しました
@Override
public void onDestroy() {
super.onDestroy();
if (dialog != null) {
dialog.dismiss();
dialog = null;
}
}
おそらくあなたが書いているので
textValidation.setText(e.toString());
関数内
doInBackground()
doInBackground()メソッドのAndroidで許可されているUIを更新しています。この行を入力するとどういうわけか
postExecute()
その後、この問題は解決されます。