我正在尝试覆盖CursorLoader
的{{1}}方法,所以我在我的应用中尝试了:
public Cursor loadInBackground()
但是这些CursorLoader的“package-local”字段对于DistinctCursorLoader是不可见的 - 尽管它们在同一个包中(尽管显然不在同一个jar中)
这是来自CursorLoader.java(android的源代码):
package android.content;
public class DistinctCursorLoader extends CursorLoader {
@Override
public Cursor loadInBackground() {
// I need to use mUri, mProjection, mSelection, mSortOrder
答案 0 :(得分:1)
您无法通过坚持自己的命名空间来对Android平台进行更改。您在IDE中看到的Android平台组件的源代码是为了方便您了解该平台,而不是访问其非公共API。
android。*中的所有类在运行时都存在于设备本身。它们没有捆绑到应用程序中。因此,首先,您不能保证这些特定字段将会存在,因为Android版本之间的内容可能会发生变化。其次,这些字段在发送到设备之前可能已经重命名或混淆,因为它们不是公共API,并且没有期望被应用程序代码直接访问。
如果您感觉非常叛逆,可以尝试在运行时使用反射来查找和更改隐藏的API,但这肯定会在将来导致问题。所以不要这样做。