Java 活动泄漏了最初添加到此处的窗口(当登录数据错误时)
当用户输入错误密码时,我在android应用程序中的登录活动中出错(如果成功不是真的)。显示用户输入错误密码时的错误(例如),但也显示调试期间的错误。不知道为什么 错误:Java 活动泄漏了最初添加到此处的窗口(当登录数据错误时),java,android,Java,Android,当用户输入错误密码时,我在android应用程序中的登录活动中出错(如果成功不是真的)。显示用户输入错误密码时的错误(例如),但也显示调试期间的错误。不知道为什么 错误: E/WindowManager:android.view.WindowLeaked:Activity de.myfirstapp.app.LoginActivity已泄漏窗口DecorView@a5b0d96[]最初添加到此处的 在android.view.ViewRootImpl。(ViewRootImpl.java:43
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,没有名为的对话框。请重试。因此,使用对话框没有什么可忽略的。取消或忽略。你认为我的答案是“好”吗?如果我不明白你说的话,我还能做得更好吗?