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();