1

私がやりたいことは、既存のアクティビティに onKeyDown リスナーをプログラムで追加することだけです。私がやりたいことの少しのコンテキスト: メディア プレーヤーで発生するクリック イベントを処理するスタンドアロン関数を作成したいと考えています。

ie: このクラスがあるとしましょう。

public class Main extends Activity
{    
@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
            setContentView(R.layout.maingui);
    }

@Override
     public boolean onKeyDown(int keyCode, KeyEvent event) {
         switch (keyCode) {
             case KeyEvent.KEYCODE_MEDIA_FAST_FORWARD:
        }
        return false;
      }
}

私がやりたいことは、プログラミングによって onKeyDown リスナーを追加する関数を追加することです。

すなわち:

    public class Main extends Activity
    {    
    @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
                setContentView(R.layout.maingui);

                createListener();
        }

}
public void createListener()
{
    @Override
         public boolean onKeyDown(int keyCode, KeyEvent event) {

             switch (keyCode) {
                 case KeyEvent.KEYCODE_MEDIA_FAST_FORWARD:
          }
            return false;
    }
}

これは明らかにうまくいきませんが、私がやろうとしていることの良いアイデアを与えてくれます。

これは私が試したもので、うまくいきません。

    public class Main extends Activity
    {    
    @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
                setContentView(R.layout.maingui);

            MyKeyClickClass.createListener(this);
    }

}
  • 次に、 MyKeyClickClass クラスでこの関数を想像してください

    public static void createListener(Activity act)
        {      
            View testing = act.getWindow().getDecorView().findViewById(android.R.id.content);
    
            testing.setOnKeyListener(new OnKeyListener(){
    
                @Override
                public boolean onKey(View v, int keyCode, KeyEvent event) {
                    // TODO Auto-generated method stub
    
                    String test = "Hi";
    
                    return false;
                }
            });
        }
    

これはもしかしてやるのか?このようにして重要なイベントに応答がありません。

乾杯

4

1 に答える 1

2

なんらかの理由で onKeyDown をそのまま使用できない場合は、onKeyDown でそのパラメーターを別の関数に渡せませんか?

myKeyListener クラスを作成すると、次のようなことができます。

 @Override
 public boolean onKeyDown(int keyCode, KeyEvent event) {
     myKeyListener.onKeyDown(keyCode, event);
 }
于 2012-12-14T01:29:27.810 に答える