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をオーバーライドしてアクティビティを作成すると(たとえば、OverridenBackKeyActivity)、OverridenBackKeyActivityから継承するアクティビティは自動的にその動作を継承します。

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


}

そして、アクティビティは、Activity だけでなく TemplateActivity を拡張する必要があります。

それが役立つことを願っています。

于 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を呼び出すスーパークラスからすべてのアクティビティを継承する場合は、1回だけ書き込む必要があります。

于 2012-11-30T08:24:31.137 に答える