Android - 覆盖较高API版本的方法并支持较低的API版本

时间:2011-09-25 17:43:33

标签: java android

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

public boolean onKeyLongPress(int keyCode, KeyEvent event)

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

2 个答案:

答案 0 :(得分:5)

为什么不删除方法上方的@Override注释? Android 1.6会忽略它,2.0仍会正确解释它。

答案 1 :(得分:0)

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

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