可以在Java中实现私有接口或扩展私有类吗?
我与android可以在Java中实现私有接口或扩展私有类吗?,java,android,Java,Android,我与androidEditText斗争了好几天,试图在选择文本时摆脱“粘贴”弹出窗口。(我的扩展编辑文本为只读且可选择) 从anwser到问题: 覆盖包私有方法canPaste()对于dalvik运行时是可以的,但是对于上面使用ART的android 5.0将不起作用 因此我找到了解决问题的其他方法,而不是跳过该方法,而是尝试替换编辑器的字段变量 我查看了EditText的助手类Editor得到了很多特定的逻辑,如果我能在适当的时间用一个伪子类替换InsertionPointCursorCont
EditText
斗争了好几天,试图在选择文本时摆脱“粘贴”弹出窗口。(我的扩展编辑文本为只读且可选择)
从anwser到问题:
覆盖包私有方法canPaste()
对于dalvik运行时是可以的,但是对于上面使用ART的android 5.0将不起作用
因此我找到了解决问题的其他方法,而不是跳过该方法,而是尝试替换编辑器的字段变量
我查看了EditText
的助手类Editor
得到了很多特定的逻辑,如果我能在适当的时间用一个伪子类替换InsertionPointCursorController
,它将不会显示弹出窗口。(InsertionPointCursorController是一个私有类,它实现了一个私有接口,因此要用一个伪子类替换它,我需要扩展该类或实现该接口)
查看getInsertionController().showWithActionPopup()显示弹出窗口:(
现在,我将尝试替换前活动的remove回调,因为您不能扩展外部私有类(在同一个包中默认,在其他包中受保护)和接口 扩展您需要更改的父类,并重写您需要使用的方法,但同样不能重写私有方法。
你可以重新编码它们(相当“重载”)。你不能有一个外部的
private
类。而且,我看不出你的问题和标题之间有什么联系。外部接口不能是私有的,只有内部接口可以。private
和package private
是两个不同的东西。
public boolean performLongClick(boolean handled) {
// Long press in empty space moves cursor and shows the Paste affordance if available.
if (!handled && !isPositionOnText(mLastDownPositionX, mLastDownPositionY) &&
mInsertionControllerEnabled) {
final int offset = mTextView.getOffsetForPosition(mLastDownPositionX,
mLastDownPositionY);
stopSelectionActionMode();
Selection.setSelection((Spannable) mTextView.getText(), offset);
getInsertionController().showWithActionPopup();
handled = true;
}