每当活动调用函数时,Helper的函数都会覆盖`onKeyDown`?

时间:2012-11-30 07:58:08

标签: android onkeydown

我有很多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(...);

我可以做这样的事情吗?怎么做?提前谢谢!

3 个答案:

答案 0 :(得分:3)

我认为在不同活动之间共享该行为的最佳方式是使所有这些行为都继承自覆盖onKeyDown方法的同一个超类。

因此,如果使用onKeyDown overriden创建一个Activity(让我们说OverridenBackKeyActivity),任何继承自OverridenBackKeyActivity的Activity都会自动继承该行为。

答案 1 :(得分:1)

只需制作一项活动并将其扩展到您的活动中。

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);
}


}

然后您的活动应该扩展TemplateActivity而不是Activity。

希望有所帮助。

答案 2 :(得分:0)

当然你可以这样做:

Helper类中的

声明你的方法:

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的超类中的所有活动,你只需要编写一次。