java - Android - 以编程方式向 Activity 添加关键监听器

标签 java android android-activity keyevent onkeydown

我想要做的就是以编程方式向现有 Activity 添加 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;
                }
            });
        }
    

这可能吗?我没有得到对这样做的关键事件的任何回应。

干杯

最佳答案

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

如果您创建 myKeyListener 类,那么您可以执行类似的操作。

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

关于java - Android - 以编程方式向 Activity 添加关键监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13871271/

相关文章:

java - 编写 jax-ws web 服务并生成无 XSD 的 WSDL

java - 错误:javax.net.ssl.SSLHandshakeException,SSL 库失败?

android - Android activityView 中倒计时/计时器的后台任务

android - 单击后 SeekBar 拇指消失

android - 如何在 Fragment 中重用 onNewIntent() 方法?

java - Android Volley POST 无法正常工作

java - 从 Android,无法连接到我的 Java ServerSocket

java - 没有 anchor 不能使用菜单弹出助手

java - 使用接口(interface)通过两个 Activity 传递数据

java - 如何将米转换为英里,并以英尺和英寸为单位给出余数?