错误:"类必须实现抽象方法X",但它已经实现了

Lar*_*rsH 5 java android abstract-class packages

我有这个抽象的超类:

public abstract class MediaListActivity extends Activity {
    ...
    abstract void launchMedia(MediaFile mediaFile);
}
Run Code Online (Sandbox Code Playgroud)

和具体的子类:

public class VideoListActivity extends MediaListActivity {
    ...
    void launchMedia(MediaFile mediaFile) {
        // TODO: implement launchMedia()
    }
}
Run Code Online (Sandbox Code Playgroud)

在VideoListActivity子类的第一行,Android Studio会给出错误

类'VideoListActivity'必须被声明为abstract或在'MediaListActivity'中实现抽象方法'launchMedia(MediaFile)'

我明白为什么会这样.但确实如此!不是吗?我检查过签名是否匹配; 我已经尝试过Option + Return来让IDE建议修复; 什么都行不通

这只是Android Studio的一个错误吗?或者我做错了什么?

现在碰巧这些类在不同的包中:子类VideoListActivity在"子包"中foo.bar.baz.video,而超类MediaListActivity在包中foo.bar.baz.

如果我将VideoListActivity移动到foo.bar.baz包中,则错误就会消失.但是我有几个这些具体的子类,我不想把顶级包与它们混为一谈:我喜欢它们组织成它们的子包.我该怎么做才能消除这个错误(假设它甚至是必要的)?

Lar*_*rsH 3

答案是确保该方法的实现launchMedia()可以在其包外部访问:即它必须是protectedor public。我以为我已经尝试过,但我可能一直在寻找错误的方法。不管怎样,这会让错误消失。