1

我看到了android代码:

 /**
     * Called when this view wants to give up focus. This will cause
     * {@link #onFocusChanged} to be called.
     */
    public void clearFocus() {
        if (DBG) {
            System.out.println(this + " clearFocus()");
        }

        if ((mPrivateFlags & FOCUSED) != 0) {
            mPrivateFlags &= ~FOCUSED;

            if (mParent != null) {
                mParent.clearChildFocus(this);
            }

            onFocusChanged(false, 0, null);
            refreshDrawableState();
        }
    }
/**
 * Called to clear the focus of a view that is about to be removed.
 * Doesn't call clearChildFocus, which prevents this view from taking
 * focus again before it has been removed from the parent
 */
 void clearFocusForRemoval() {
        if ((mPrivateFlags & FOCUSED) != 0) {
            mPrivateFlags &= ~FOCUSED;

            onFocusChanged(false, 0, null);
            refreshDrawableState();
        }
    }
  1. 有人可以解释其中的区别吗?
  2. 为什么不调用 mParent.clearChildFocus(this);方法clearFocusForRemoval()
4

1 回答 1

1

不要太担心它。看起来它是发布版本4.0.4_r2.1中的冗余包私有方法(或者说不是非常有用的方法 - 在视图被删除时由视图系统内部调用),该方法在更高版本中被删除

于 2013-08-12T07:19:58.320 回答