2012-05-02 163 views
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) { 

     } 
} 

我希望用戶在點擊運行AddItem()和運行AskForDate()如果在輸入密鑰的用戶保持。 但行動KeyEvent.ACTION_DOWN只是當我從鍵盤上刪除手指時觸發,我是否缺少什麼?

在Android 2.3.7(CM7.2)測試和Android 4.0.4(CM9),都與默認softkeyboard

+0

我的猜測是,由於Android可以有許多不同的軟件鍵盤,並非所有的軟件都能夠正確支持所有操作,因此您無法可靠地創建始終有效的onHold操作。不過,我希望有人證明我錯了。 – ZeroOne

+0

你能否更詳細地闡述你的問題,你究竟在尋找什麼? – Kamal

+0

@Kamal我編輯了這個問題。在此先感謝 – Joaolvcm

回答

0

onKeyLongPress event

嘗試上一個,它說你必須調用startTracking在聽衆

使你的代碼應該像

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

,自活動 SUBC您可以從那裏直接撥打AskForDate()

+0

你能否詳細說明一下? – Joaolvcm