2013-02-13 49 views
0

我想,當用戶點擊「DEL」鍵(屏幕鍵盤上),修改的操作,這裏的代碼OnKeyListener安其重複動作

ed.setOnKeyListener(new View.OnKeyListener() { 
     @Override 
     public boolean onKey(View v, int keyCode, KeyEvent event) { 
      if (keyCode == KeyEvent.KEYCODE_DEL) { 
       if(contadorcor == 0){ 
        String output = correctOutput(String.valueOf(ed.getText())); 
        ed.setText(output); 
        ed.setSelection(num); 
        contadorcor++; 
       } 
      } 
      contadorcor = 0; 
      return false; 
     } 
    }); 

public static String correctOutput(String s) { 
    String input = s; 
    int pos = 0; 
    for (int i = 0; i < input.length(); i++) { 
      if(input.charAt(i) != ' ') { 
      if(input.charAt(i) != '_') { 
       pos = i; 
      } 
     } 
    } 
    String output = ""; 
    for (int i = 0; i < input.length(); i++) { 
     if(i != pos) { 
      output = output + String.valueOf(input.charAt(i)); 
     } else { 
      output = output + "_"; 
     } 
    } 
    num = num - 2; 
    return output; 
} 

要理解爲什麼我這樣做了,因爲有是一個像這樣的未知單詞「_ _ _ _ _ _ _ .....」,並且當用戶在嘗試猜測時刪除了一個字母,可以說「THISIK | _ _ ...」並且想要更正「K」並且光標位於下一個「下劃線」的開頭,我想刪除「k」並用「下劃線」代替它,然後將光標放在那裏。 「T H I S I | _ _ _ _ ....」

但是,當我按下刪除鍵使這個動作兩次,並刪除2個字母。我提到keydown和keyup,這就是爲什麼它重複,但我不知道如何解決它。我試過做某種計數器,但它不工作

在此先感謝。

回答

2

在onKey方法中,您有一個參數:event。您可以執行以下操作:

if(event.getAction()==KeyEvent.ACTION_UP){ 
... 
} 
else if(event.getAction()==KeyEvent.ACTION_DOWN){ 
... 
} 
+0

非常感謝我會試一試! – user2053905 2013-02-13 12:06:06