Error: "class must implement abstract method X", but it already does

Error: "class must implement abstract method X", but it already does

我有这个抽象超类:

public abstract class MediaListActivity extends Activity {
    ...
    abstract void launchMedia(MediaFile mediaFile);
}

和具体子类:

public class VideoListActivity extends MediaListActivity {
    ...
    void launchMedia(MediaFile mediaFile) {
        // TODO: implement launchMedia()
    }
}

在VideoListActivity子类的第一行,AndroidStudio报错

Class 'VideoListActivity' must either be declared abstract or implement abstract method 'launchMedia(MediaFile)' in 'MediaListActivity'

我明白为什么会这样。但确实如此!不是吗?我检查过签名是否匹配;我试过 Option+Return 让 IDE 提出修复建议;没有任何效果。

这只是 Android 工作室的失误吗?还是我做错了什么?

现在碰巧 类 在不同的包中:子类 VideoListActivity 在 "sub-package," foo.bar.baz.video 中,而超类 MediaListActivity 在包 foo.bar.baz 中。

如果我将 VideoListActivity 移到 foo.bar.baz 包中,错误就会消失。但是我有几个这样的具体子类,我不想用它们弄乱顶级包:我喜欢将它们组织到它们的子包中。我能做些什么来消除这个错误(假设它是必要的)?

答案是确保方法 launchMedia() 的实现可以在其包外访问:即它必须是 protectedpublic。我以为我已经尝试过了,但我可能一直在寻找错误的方法。无论如何,这会使错误消失。