私がやりたいことは、既存のアクティビティに 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; } }); }
これはもしかしてやるのか?このようにして重要なイベントに応答がありません。
乾杯