首页 > 解决方案 > 无法覆盖超类中的受保护方法

问题描述

我想用以下签名覆盖 TextView 的两个方法(其中 AppCompatEditText 是一个子类):

 protected void setSpan_internal(Object span, int start, int end, int flags) {
   ((Editable) mText).setSpan(span, start, end, flags);
 }
 protected void setCursorPosition_internal(int start, int end) {
   Selection.setSelection(((Editable) mText), start, end);
 }

无论我做什么,它们在 Android Studio 的 CTRL+O 对话框中都不像可覆盖的方法,如果我手动执行,IDE linter 会抱怨“从未使用过方法”。

那是我的代码:

public class MaxLengthEditText extends AppCompatEditText {
    public MaxLengthEditText(Context context) {
        super(context);
    }

    public MaxLengthEditText(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public MaxLengthEditText(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    protected void setSpan_internal(Object span, int start, int end, int flags) {
        final int textLength = getText().length();
        getText().setSpan(span, start, Math.min(end, textLength),  flags);
    }


    protected void setCursorPosition_internal(int start, int end) {
        final int textLength = getText().length();
        Selection.setSelection(getText(), Math.min(start, textLength), Math.min(end, textLength));
    }
}

我在这里做错了什么?

标签: javaandroidtextviewoverridingprotected

解决方案


推荐阅读