我想做的只是以编程方式将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);
}