java - 无法覆盖超类中的受保护方法
问题描述
我想用以下签名覆盖 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));
}
}
我在这里做错了什么?
解决方案
推荐阅读
- r - Rcmd 检查:我从未使用过的“:::”调用导入的未导出对象
- ruby-on-rails - 将 Rails 推到 Heroku,找不到 Rake taks
- sql - 转义奇数个撇号?
- c# - C# WPF 帮助 1. 删除列表框中的前两个条目或 2. 阻止它在输出中显示批处理中的命令语法
- javascript - TypeError:Restivus 不是 Vulcan 项目中的构造函数
- firebase - 我刚刚从我的 firebase firestore 数据库中丢失了大量数据,有什么办法可以恢复吗?
- javascript - 如何解决:“类型错误:无法读取 null 的属性 'addEventListener'”...?//
- python-3.x - 如何在 Python 中使用正则表达式搜索来搜索文本块?
- python - 访问方法变量
- google-cloud-platform - 在云上使用 gcloud 存储与 ruby 一起运行