(7)Launcher3客制化之,修改单屏幕后,Fix在Hotseat拖动应用删除报错

来源:互联网 发布:淘宝极速退款条件 编辑:程序博客网 时间:2024/05/21 01:58

修改单屏幕后,在workspace里面拖动图标,到删除按钮上松开的时候,报错问题。

并且无法再次显示拖动的图标。

拖动松开手时候触发

public void onDropCompleted(final View target, final DragObject d,            final boolean isFlingToDelete, final boolean success) {        if (mDeferDropAfterUninstall) {//如果要卸载软件重新调用一次            mDeferredAction = new Runnable() {                    public void run() {                        onDropCompleted(target, d, isFlingToDelete, success);                        mDeferredAction = null;                    }                };            return;        }        boolean beingCalledAfterUninstall = mDeferredAction != null;        if (success && !(beingCalledAfterUninstall && !mUninstallSuccessful)) {            if (target != this && mDragInfo != null) {                CellLayout parentCell = getParentCellLayoutForView(mDragInfo.cell);                if (parentCell != null) {                    parentCell.removeView(mDragInfo.cell);                }                if (mDragInfo.cell instanceof DropTarget) {                    mDragController.removeDropTarget((DropTarget) mDragInfo.cell);                }                // If we move the item to anything not on the Workspace, check if any empty                // screens need to be removed. If we dropped back on the workspace, this will                // be done post drop animation.                stripEmptyScreens();            }        } else if (mDragInfo != null && target != null && (!(target instanceof InfoDropTarget))) {            CellLayout cellLayout;            if (mLauncher.isHotseatLayout(target)) {                cellLayout = mLauncher.getHotseat().getLayout();            } else {                cellLayout = getScreenWithId(mDragInfo.screenId);            }            //            if (cellLayout == null) {//                throw new RuntimeException("Invalid state: cellLayout == null in "//                        + "Workspace#onDropCompleted. Please file a bug. ");//            }            在此处加入这两句即可修复此BUG            if (cellLayout != null) {                cellLayout.onDropChild(mDragInfo.cell);            }                        if( mDragInfo.cell!=null){            <span style="white-space:pre"></span>  mDragInfo.cell.setVisibility(VISIBLE);            }        }        if ((d.cancelled || target instanceof InfoDropTarget || (beingCalledAfterUninstall && !mUninstallSuccessful))                && mDragInfo.cell != null) {            mDragInfo.cell.setVisibility(VISIBLE);        }                       mDragOutline = null;        mDragInfo = null;       }
                                             
1 0