我有很多Activity
需要override
onKeyDown
事件,如下所示:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
// Do something here
return false;
}
return super.onKeyDown(keyCode, event);
}
这里的问题是:我有很多活动应该调用上面的代码块(在任何活动中都没有不同)。所以我想写一个帮助程序的函数,如下所示:
public static void overrideOnKeyDownFunction(...);
而且,在任何需要覆盖onKeyDown
事件(与第一个代码块相同)的活动中,我只能调用:Helper.overrideOnKeyDownFunction(...);
!
我可以做这样的事情吗?怎么做呢?提前感谢!
我认为在不同活动之间共享该行为的最佳方法是使它们都继承自覆盖onKeyDown方法的同一超类。
因此,如果您创建一个使用 onKeyDown overriden 的活动(假设 OverridenBackKeyActivity),任何从 OverridenBackKeyActivity 继承的活动都将自动继承该行为。
只需创建一个活动并将其扩展到您的活动中。
public class TemplateActivity extends Activity{
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
// Do something here
return false;
}
return super.onKeyDown(keyCode, event);
}
}
然后,您的活动应该扩展模板活动,而不仅仅是活动。
希望有帮助。
当然你可以这样做:
在帮助程序类中声明您的方法:
public static void overrideOnKeyDownFunction (AnyParamYouNeed param){
//code here
}
然后,在每个活动中:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
Helper.overrideOnKeyDownFunction(param);
return false;
}
return super.onKeyDown(keyCode, event);
}
但同样,如果你从 onKeyDown 调用 Helper.overrideOnKeyDownFunction 的超类继承所有活动,你只需要编写一次。