2011-09-25 76 views
5

我喜欢听在我的Android应用程序很长的按键,并从Android 2.0的有一个方法Android的 - 从更高版本的API重写方法和支持较低API版本

public boolean onKeyLongPress(int keyCode, KeyEvent event) 

覆盖。但是如果我的应用绝对必须支持API 4(Android 1.6),我该怎么办?我知道我可以使用反射调用API方法,但我很确定我无法用反射进行覆盖。

回答

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中的MyCustomViewBasic

+0

不幸的是我想这样做的活动 – Axarydax

5

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

+0

重写函数不是困难的部分......这种事件需要使用super.onKeyLongPress()在它的内部,以便正确处理链的事件。 Android <2.0会在super.onKeyLongPress()中窒息,因为它不存在,并且无法在Java中使用反射调用super.whatever()。我被困在试图找出一种方法来获得这种同样的东西来为API 3工作,我也处于亏损状态。 –

相关问题