java - 显示对话框时应用程序崩溃
问题描述
尝试调用此方法时出现错误:
okHttpClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, final IOException e) {
runOnUiThread(new Runnable() {
@Override
public void run() {
showErrorAlert(e.toString());
}
});
}
//The Method:
public void showErrorAlert(String error) {
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(ProjectListActivity.this);
dialogBuilder.setMessage("Hmm, there seems to be an error downloading the project list. " + error);
dialogBuilder.setCancelable(true);
dialogBuilder.setPositiveButton(
"Okay",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alert = dialogBuilder.create();
alert.show();
}
因此,当调用失败时,它会立即崩溃,这是控制台中的输出:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.chimesoftware.chime.chimetimemanager, PID: 5770
android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@a9b7fff is not valid; is your activity running?
at android.view.ViewRootImpl.setView(ViewRootImpl.java:925)
at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:356)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:93)
at android.app.Dialog.show(Dialog.java:330)
at com.chimesoftware.chime.chimetimemanager.ProjectListActivity.showErrorAlert(ProjectListActivity.java:145)
at com.chimesoftware.chime.chimetimemanager.ProjectListActivity$1$1.run(ProjectListActivity.java:77)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6753)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:482)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
这可能是由于错误地调用错误吗?或者可能是因为我试图显示的错误类型。
谢谢你。
解决方案
if(!((Activity) context).isFinishing()){
//show dialog here
}
推荐阅读
- floating-point - 二进制浮点(IEEE 754)如何转换为十进制(即字符串)?
- python - Python 中的 IF 条件如何工作?
- python - “点子列表”中的 IdleX,但我无法从命令窗口访问它
- java - Android本地单元测试问题[JUnit 4.12]
- typescript - 为什么这个自定义类型定义不能正确导出函数?
- node.js - 使用 MongoDB 的 Express 应用程序无法在 Heroku 上运行
- javascript - 打字稿编译供应商,排除不会工作
- java - 项目缺少所需的库 - 缺少 jar 文件
- android - 无法读取未定义异常 vue-native 的属性“transformFile”
- c - 在C中关闭部分套接字