Android - 以编程方式向活动添加密钥侦听器



我想做的只是以编程方式将onKeyDown侦听器添加到现有活动中。 我想做的一点上下文:我想创建一个独立的函数来处理媒体播放器中发生的点击事件。

即:让我们假装我有这个课。

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 Listener的函数。

即:

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

这可能吗?我对以这种方式这样做的关键事件没有任何回应。

干杯

如果出于某种原因你不能只使用 onKeyDown,你就不能让 onKeyDown 将其参数传递给另一个函数吗?

如果你创建了一个myKeyListener类,那么你可以做这样的事情。

 @Override
 public boolean onKeyDown(int keyCode, KeyEvent event) {
     myKeyListener.onKeyDown(keyCode, event);
 }

最新更新