キーボードのエンターキーで「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