当前位置: 首页 > 知识库问答 >
问题:

Android视图未连接到窗口管理器(对话框关闭)

巫马刚洁
2023-03-14

Java语言lang.IllegalArgumentException:View=com.Android内部的政策impl。PhoneWindow$DecorView{41c2e378 V.E…..R……D 0,0-450161}未连接到窗口管理器

主要活动:

   Intent intent = new Intent(MainActivity.this, SecondActivity.class);
                       startActivity(intent);
                        finish();    

第二活动

 new SetEntrySent(SecondActivity.class, false).execute(id);

 Intent intent = new Intent(SecondActivity.this, MainActivity.class,);
                           startActivity(intent);
                            finish();   

CreateEntry异步onpostexecute

 dialog.dismiss();
}//finishing class

主要活动:

 **onresume**

//checks again and if entry not sent, it also calls:
   new SetEntrySent(SecondActivity.class, false).execute(id);

对于

 dialog.dismiss();

它给出了错误。

过程:com。实例androidwithlogin,PID:27426 java。lang.IllegalArgumentException:View=com.Android内部的政策impl。PhoneWindow$DecorView{41c2e378 V.E…..R……D 0,0-450161}未连接到窗口管理器

首先,主活动调用第二个活动。第二个活动,在操作后调用asynctask,同时完成并意图mainactivity。

当我不使用finish()时,它可以工作。

我可以从asynctask中获取mainactivity,但secondactivity将如何完成?asynctask具有secondactivity的上下文。它能完成吗?

我搜索并找到了这个

   private void dismissProgressDialog() {
    if (pDialog != null && pDialog.isShowing()) {
        pDialog.dismiss();
    }
}

这是可行的。

但是由于异步,asynctask被多次调用。

预防这种情况的最佳方法是什么?如果我将going to mainactivity设置为异步的postexecute

CreateEntry异步onpostexecute

 dialog.dismiss();
 Intent intent = new Intent(context, MainActivity.class,);
                           startActivity(intent);
                            finish();   
}//finishing class

它也能完成第二个活动吗?因为异步任务将完成,主活动不能再次调用它。

共有1个答案

夏侯腾
2023-03-14

您可以尝试检查活动的isFinishing功能。类似于

if ( !YourActivity.isFinishing() && dialog != null && dialog.isShowing()) 
    dialog.dismiss();
 类似资料:
  • 2.3 理解文件对话框窗口 通过文件对话框窗口,用户可以浏览和选择他们想要查看的文件。它为用户提供了一个与被调试程序有关的所有源代码文件的列表。如果没有文件被显示,可能是因为没有程序正在被调试,或者是因为被调试的可执行程序中没有调试信息,在这些情况下,文件对话框窗口不会打开,状态栏上会显示一条错误信息。 您可以通过在代码窗口中键入 o 来打开文件对话框窗口。当您打开了文件对话框窗口后,需要通过键入

  • 基于apache Kafka文档,我的问题是如何控制窗口的大小?保持主题上的数据的大小是一样的吗?或者例如,我们可以将数据保留一个月,但只加入过去一周的流? 有没有什么好的例子来展示一个窗口的KStream-to-kStream窗口连接? 在我的例子中,假设我有2个KStream、和我希望能够加入10天的到30天的。

  • Window Manager 是一种特殊的 Xclient。 使用窗口管理器时,Xserver 并不直接与其它 Xclient 通信,而是通过 WM 中转,当一些消息被定义为 WM 指令时,它们会被拦截。例如 Alt+F4 关闭窗口、拖动标题栏…… 消息“打开链接 linuxtoy.org”,具体内容如下:     输入焦点在地址栏的范围内,“linuxtoy.org”,回车      Xserv

  • 我想知道有没有一种方法可以在显示系统对话框时获取事件(例如任务管理器、关闭警报、...)。 我可以通过下面的意图关闭我的活动中的系统对话框 但是在我的代码中,我需要知道屏幕上显示了一个系统对话框(它们可以是任务管理器/关闭对话框……),这样我就可以调用上面的代码来关闭它。 我搜索了意图过滤器没有找到。

  • 就在我解决了我的第一个问题之后,这个问题出现了:(请帮我解决它... 03-02 12:47:02.785 9439-9439/com . ucu . CCS . class record E/window manager£Android . view . window leaved:Activity com . ucu . CCS . class record . log in已泄漏window

  • 场景是:您在窗口(a)中,单击按钮/链接启动打印过程,然后打开一个新窗口(B),其中包含要打印的内容,打印对话立即显示,如果您单击窗口(B)的取消按钮,那么您应该可以再次打印,但当您单击窗口(B)的打印按钮打印时,您可以打印,但窗口(a)的按钮不能再次继续打印。给我一些解决方案…!!!在chrome,Firefox和internet explorer上工作