java.lang.IllegalArgumentException:View = com.android.internal.policy.impl.PhoneWindow $ DecorView {41c2e378 VE .... R ...... D 0,0-450,161}未附加到窗口管理器
MainActivity:
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivity(intent);
finish();
SecondActivity
new SetEntrySent(SecondActivity.class, false).execute(id);
Intent intent = new Intent(SecondActivity.this, MainActivity.class,);
startActivity(intent);
finish();
CreateEntry Async 的 onpostexecute
dialog.dismiss();
}//finishing class
MainActivity:
**onresume**
//checks again and if entry not sent, it also calls:
new SetEntrySent(SecondActivity.class, false).execute(id);
的
dialog.dismiss();
它会出错。
处理:com.example..androidwithlogin,PID:27426 java.lang.IllegalArgumentException异常: 查看= com.android.internal.policy.impl.PhoneWindow $ {DecorView 41c2e378 V.E ..... R ...... D 0,0-450,161}未附加到窗口管理器
首先,主要活动调用第二个活动。第二个活动,在操作之后调用asynctask并同时完成并调试mainactivity。
当我没有finish()
时,它可以正常工作。
我可以从asynctask中获得主要活动,但第二活动将如何完成? asynctask具有第二活动的背景。可以完成吗?
我搜索并找到了这个
private void dismissProgressDialog() {
if (pDialog != null && pDialog.isShowing()) {
pDialog.dismiss();
}
}
它适用于此。
但由于异步,asynctask被称为很多次。
防止这种情况的最佳方法是什么?如果我将主要活动发送到async的astexecute
CreateEntry Async 的 onpostexecute
dialog.dismiss();
Intent intent = new Intent(context, MainActivity.class,);
startActivity(intent);
finish();
}//finishing class
它也可以完成第二次活动并且安全吗?因为asynctask将完成,mainactivity不能再次调用它。
答案 0 :(得分:0)
您可以尝试检查活动上的isFinishing功能。像
这样的东西if ( !YourActivity.isFinishing() && dialog != null && dialog.isShowing())
dialog.dismiss();