2

我写了一个监听器,它在 KeyDown 上执行一些操作,基本上我需要将它包含在我的所有活动中,但我是 Java 新手,不知道最好的方法,我当然可以将代码复制粘贴到每个类但是让每个人都更新会很痛苦。

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if(sharedPrefs.getBoolean("pref_disable_keydowns", true)) {
        System.out.println("Prevent keydown");
        return true; 
        }
    return super.onKeyDown(keyCode, event);
}

如何将它包含在不同的 .java 文件中,这样我只需修改一次即可影响它包含的所有类?

4

1 回答 1

2

不要在(几乎)没有任何情况下将代码从一种方法复制到另一种方法。

现在到您的解决方案:

public class MyListerer implement KeyListener {

    public void onKeyDown(int keyCode, KeyEvent event){
        Toast.makeText(this, "Hey world!", Toast.LENGTH_LONG).show();
    }
}

现在你可以制作

object.addKeyListener(new MyListener());

我很确定,接口KeyListener可能有不同的名称,但我想你明白了。

更新

都是关于 Android 活动的吗?http://developer.android.com/reference/android/app/Activity.html

在这种情况下,您可以以不同的方式实现它。Android 活动中没有事件监听器。您可以执行以下操作:

class MyActivity extends Activity {

    private MyListener delegate= new MyListener();

    // your existing code

    public boolean onKeyDown(int keyCode, KeyEvent event)  {
        delegate.onKeyDown(keyCode, event);
    }

}
于 2013-01-23T19:47:57.037 回答