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 に答える