我想要做的就是以编程方式向现有 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/