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



java.lang.IllegalArgumentException:View=com.android.internal.policy.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 Asynconpostexecute

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.example.androidwithlogin,PID:27426java.lang.IollegalArgumentException:View=com.android.internal.policy.impl.PhoneWindow$DecorView{41c2e378V.E……R……D 0,0-450161}未连接到窗口管理器

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

当我不使用finish()时,它会起作用。

我可以从asynctask中指定mainactivity,但secondactivity将如何完成?asynctask的上下文为secondactivity。它能完成吗?

我搜索了一下,找到了这个

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

这是有效的。

但是由于async,asynctask被调用了很多次。

预防这种情况的最佳方法是什么?如果我把进入mainactivity放到异步的postexecute

CreateEntry Asynconpostexecute

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

它也能完成第二次活动吗?安全吗?由于asynctask即将完成,mainactivity无法再次调用它。

您可以尝试在活动上检查isFinishing函数。类似的东西

if ( !YourActivity.isFinishing() && dialog != null && dialog.isShowing()) 
dialog.dismiss();

最新更新