java.lang.IllegalArgumentException: 视图=com.android.internal.policy.impl.PhoneWindow$DecorView{41c2e378 V.E..... 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: View=com.android.internal.policy.impl.PhoneWindow$DecorView{41c2e378 V.E..... R......D 0,0-450,161}未附加到窗口管理器
首先,主活动调用第二个活动。第二个活动,在操作完成后调用异步任务,同时完成并意图返回主活动。
如果没有使用finish()
,它可以工作。
我可以从异步任务中意图返回主活动,但是第二个活动将如何结束?异步任务具有第二个活动的上下文。它可以结束吗?
我搜索并找到了这个。
private void dismissProgressDialog() {
if (pDialog != null && pDialog.isShowing()) {
pDialog.dismiss();
}
}
它可以实现这个目标。
但是由于异步操作,asynctask会被多次调用。
有什么最好的方法来预防这种情况?如果我将前往MainActivity的操作放在AsyncTask的onPostExecute中
CreateEntry Async onPostExecute
dialog.dismiss();
Intent intent = new Intent(context, MainActivity.class,);
startActivity(intent);
finish();
}//finishing class
它是否能够完成 SecondActivity,而且这样做安全吗?因为 AsyncTask 将要结束时,MainActivity 不能再次调用它。