0

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

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

4

3 回答 3

3

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

因此,如果您创建一个覆盖了 onKeyDown 的 Activity(比如说 OverridenBackKeyActivity),则任何从 OverridenBackKeyActivity 继承的 Activity 都将自动继承该行为。

于 2012-11-30T08:10:27.917 回答
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。

希望有帮助。

于 2012-11-30T08:12:44.200 回答
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 的超类继承所有活动,则只需编写一次。

于 2012-11-30T08:24:31.137 回答