в соответствии с кодом WindowManager (ссылка здесь ), это происходит, когда представление, которое вы пытаетесь обновить (которое, вероятно, принадлежит диалогу, но не обязательно) больше не привязан к реальному корню windows.
как и предлагали другие, вы должны проверить состояние действия перед выполнением специальных операций в ваших диалогах.
вот соответствующий код, который является причиной проблемы (скопировано из исходного кода Android):
public void updateViewLayout(View view, ViewGroup.LayoutParams params) {
if (!(params instanceof WindowManager.LayoutParams)) {
throw new IllegalArgumentException("Params must be WindowManager.LayoutParams");
}
final WindowManager.LayoutParams wparams
= (WindowManager.LayoutParams)params;
view.setLayoutParams(wparams);
synchronized (this) {
int index = findViewLocked(view, true);
ViewRootImpl root = mRoots[index];
mParams[index] = wparams;
root.setLayoutParams(wparams, false);
}
}
private int findViewLocked(View view, boolean required) {
synchronized (this) {
final int count = mViews != null ? mViews.length : 0;
for (int i=0; i<count; i++) {
if (mViews[i] == view) {
return i;
}
}
if (required) {
throw new IllegalArgumentException(
"View not attached to window manager");
}
return -1;
}
}