Ted*_*opp 15 java android protected subclass
我正在编写一个直接扩展的自定义视图android.view.View.如果我尝试访问字段mScrollX或mScrollY,我看到一个错误,该字段"无法解析或不是字段".android.view.View的源代码有mScrollX,mScrollY和声明的类似变量protected.我的直接子类怎么不能访问其父类的受保护字段?(像ScrollView这样的类显然可以.)
PS我意识到我可以打电话getScrollX(),但我想更新这些字段; 打电话setScroll()有我不想要的副作用.
Com*_*are 21
这是因为它们不是Android SDK的一部分.
以下是源代码mScrollX:
/**
* The offset, in pixels, by which the content of this view is scrolled
* horizontally.
* {@hide}
*/
@ViewDebug.ExportedProperty(category = "scrolling")
protected int mScrollX;
Run Code Online (Sandbox Code Playgroud)
您会注意到@hide注释.这意味着这不是Android SDK的一部分.创建Android SDK的构建过程的一部分不会android.view.View在android.jar您正在编译的文件的存根版本中包含此数据成员.
该@hide注释用于该内部用途需要的是公共或保护,但一些开发人员的SDK,应使用不考虑的事情.
如果您遇到任何问题,请找到其他解决方案.
这非常直截了当:注意这些变量上方的@hide注释.它是一个特定于Android的注释,隐藏了公共SDK中的字段/方法.这就是你无法直接访问它们的原因.
Romain Guy在这篇文章中提到过它.