Java 活动泄漏了最初添加到此处的窗口(当登录数据错误时)

Java 活动泄漏了最初添加到此处的窗口(当登录数据错误时),java,android,Java,Android,当用户输入错误密码时,我在android应用程序中的登录活动中出错(如果成功不是真的)。显示用户输入错误密码时的错误(例如),但也显示调试期间的错误。不知道为什么 错误: E/WindowManager:android.view.WindowLeaked:Activity de.myfirstapp.app.LoginActivity已泄漏窗口DecorView@a5b0d96[]最初添加到此处的 在android.view.ViewRootImpl。(ViewRootImpl.java:43

当用户输入错误密码时,我在android应用程序中的登录活动中出错(如果成功不是真的)。显示用户输入错误密码时的错误(例如),但也显示调试期间的错误。不知道为什么

错误:

E/WindowManager:android.view.WindowLeaked:Activity de.myfirstapp.app.LoginActivity已泄漏窗口DecorView@a5b0d96[]最初添加到此处的
在android.view.ViewRootImpl。(ViewRootImpl.java:435)
位于android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:331)
在android.view.WindowManagerImpl.addView(WindowManagerImpl.java:94)
在android.app.Dialog.show上(Dialog.java:316)
在de.myfirstapp.app.LoginActivity$1$1$override.onResponse(LoginActivity.java:68)
在de.myfirstapp.app.LoginActivity$1$1$override.access$dispatch(LoginActivity.java)中
在de.myfirstapp.app.LoginActivity$1$1.onResponse(LoginActivity.java:0)
在de.myfirstapp.app.LoginActivity$1$1.onResponse(LoginActivity.java:50)
位于com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:60)
位于com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:30)
位于com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:99)
位于android.os.Handler.handleCallback(Handler.java:751)
位于android.os.Handler.dispatchMessage(Handler.java:95)
位于android.os.Looper.loop(Looper.java:154)
位于android.app.ActivityThread.main(ActivityThread.java:6209)
位于java.lang.reflect.Method.invoke(本机方法)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)上

在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
对话框中调用dismission:

    } else {
            AlertDialog.Builder builder = new AlertDialog.Builder(LoginActivity.this);
            builder.setMessage("Login informations are wrong. Please check email and password")
            .setNegativeButton("Retry",new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int id) {
            //retry or dialog.dismiss();
            }
            })
            .create()
            .show();

        }
    } catch (JSONException e) {
        e.printStackTrace();
        AlertDialog.Builder builder = new AlertDialog.Builder(LoginActivity.this);
        builder.setMessage("Webspace is currently not reachable.")
        .setNegativeButton("Ok", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int id) {
         dialog.dismiss();
        }
        })
        .create()
        .show();
     }

只需活动/片段被销毁之前关闭该对话框即可。。。 因此,请确保这一点,或者如果您想同时取消该活动,则需要使用它

    @Override
public void onBackPressed() {
    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
           // MainActivity.this.finish();
            //or
//MainActivity.this.getSupportFragmentManager().popBackStack();
        }
    }, 500);
}

在否定按钮
对话框中可能重复呼叫解除。取消
对话框。解除
都是无效的correct@ItsOdi1,没有名为
的对话框。请重试
。因此,使用
对话框没有什么可忽略的。取消
或忽略。你认为我的答案是“好”吗?如果我不明白你说的话,我还能做得更好吗?