Java Android-从更高的API版本覆盖方法并支持更低的API版本

Java Android-从更高的API版本覆盖方法并支持更低的API版本,java,android,Java,Android,我想在我的Android应用程序中听一下长时间的按键,在Android 2.0中有一个方法 public boolean onKeyLongPress(int keyCode, KeyEvent event) 覆盖。但如果我的应用程序必须支持API4(安卓1.6),我该怎么办?我知道我可以用反射调用API方法,但我很确定我不能用反射重写。最简单的方法是编写自定义视图类的两个实现,例如: MyCustomViewBasic extends View { private MySharedI

我想在我的Android应用程序中听一下长时间的按键,在Android 2.0中有一个方法

public boolean onKeyLongPress(int keyCode, KeyEvent event)

覆盖。但如果我的应用程序必须支持API4(安卓1.6),我该怎么办?我知道我可以用反射调用API方法,但我很确定我不能用反射重写。

最简单的方法是编写自定义视图类的两个实现,例如:

MyCustomViewBasic extends View {
    private MySharedImplementation impl;
}

MyCustomViewKeyLongPress extends View {
    private MySharedImplementation impl;

    @Override
    public boolean onKeyLongPress(int keyCode, KeyEvent event) {
        // Do something exciting
    }
}
这两个实现可以共享尽可能多的实现细节,同时确保API级别4中不可用的任何内容都不在共享实现中


然后有两个xml布局,一个用于API级别4,另一个用于API级别4及以上。在API级别4的布局中使用MyCustomViewBasic,在API级别4及以上的布局中使用MyCustomViewKeyLongPress,为什么不删除方法上方的注释?Android 1.6会忽略它,2.0仍然会正确解释它。

不幸的是,我想这样做是因为覆盖函数并不是困难的部分。。。此类事件需要在其内部使用super.onKeyLongPress(),以便正确处理事件链。安卓