0

キーボードのエンターキーで「onHold」アクションを作成しようとしています。

searchField.setOnKeyListener(new OnKeyListener() {
 @Override
 public boolean onKey(View v, int keyCode, KeyEvent event) {
  searchField.setText(searchField.getText().toString().replace("\n", ""));
 if((CounterRunning)&&(event.getAction() == KeyEvent.ACTION_UP  ) && (keyCode  == KeyEvent.KEYCODE_ENTER))
 {
   CounterRunning = false;
   counter.cancel();
    AddItem();

}
if((event.getAction() == KeyEvent.ACTION_DOWN  ) && (keyCode  == KeyEvent.KEYCODE_ENTER))
{
   CounterRunning = true;
   counter.start();
}
}});
 public class MyCount extends CountDownTimer{

     public MyCount(long millisInFuture, long countDownInterval) {
         super(millisInFuture, countDownInterval);
         }
         @Override
         public void onFinish() {
             CounterRunning = false;
                 AskForDate();
         }
         @Override
         public void onTick(long millisUntilFinished) {

         }
}

ユーザーがEnterキーを押したままにすると、ユーザーAddItem()がクリックして実行するようにします。しかし、キーボードから指を離したときにのみAskForDate()アクションがトリガーされます。何か不足していますか? Android 2.3.7 (CM7.2) および Android 4.0.4 (CM9) でテスト済み、どちらもデフォルトのソフトキーボードを使用KeyEvent.ACTION_DOWN

4

1 に答える 1

0

onKeyLongPress イベント

上のものを試してみてください。リスナーでstartTrackingを呼び出す必要があると書かれています

だからあなたのコードは次のようになるはずです

if((event.getAction() == KeyEvent.ACTION_DOWN  ) && (keyCode  == KeyEvent.KEYCODE_ENTER))
{
   event.startTracking();
}

ActivityはKeyEvent.Callbackをサブクラス化するため、そこから直接AskForDate()を呼び出すことができます。

于 2012-05-02T17:11:58.183 に答える