2011-06-02 64 views
1

我有一個簡單的活動。只有一個編輯文本和一個按鈕。在編輯文本中寫入一些文本後,如果我按下按鈕,我想刪除文本的最後一個字符。 我已經試過這樣:在edittext中追加退格

String backSpace = txtMsg.getText().toString(); 
    if(!backSpace.equals("")); 
     String mystring=backSpace.substring(0, txtMsg.length()-1)); 
txtMsg.setText(""); 
txtMsg.append(mystring); 

它工作正常,但我想通過移動光標(通過txtMsg.setSelection())手動追加退格鍵在最後的位置,並最終在任何位置; 像我們任何字符追加到文本的末尾:

txtMsg.append("C"); 

我想知道是什麼到位的C爲附加退格,請提前幫助 感謝?

+3

是否'txtMsg.append( '\ B') '做你想做的事? – 2011-06-02 13:09:29

回答

13

我不知道,如果你還需要一個答案或沒有,但最近我有同樣的需求,因爲你和我用的可編輯的Android類型刪除methond:

http://developer.android.com/reference/android/text/Editable.html#delete(int,%20int)

我有密碼的EditText,做單擊處理程序下面的「刪除」按鈕:

 // delete 
    if (m_userPass.getText().length() > 0) { 
     m_userPass.getText().delete(m_userPass.getText().length() - 1, 
       m_userPass.getText().length()); 
    } 

刪除方法有兩個參數,文本的開始和結束位置刪除。在我的例子中,我只是讓刪除按鈕刪除最後一個字符(不管光標)。如果你想變得更漂亮,你可以通過邏輯來根據光標位置確定開始和結束位置。

開始位置必須在結束位置之前(我最初意外地犯了這個錯誤)。起始位置必須大於或等於零。

4

有做你想要的東西通過一個簡單的方法:

KeyEvent event = new KeyEvent(0, 0, 0, KeyEvent.KEYCODE_DEL, 0, 0, 0, 0, KeyEvent.KEYCODE_ENDCALL); 
input.dispatchKeyEvent(event); 
+0

這也適用於當前的光標位置。不需要更多的代碼來檢查光標在哪裏。謝謝。 – Dimmy3 2014-05-05 11:26:51

4

你可以試試這個,它的工作對我來說:

if(!(text.length()==0)) 
    text.setText(text.getText().delete(text.length() - 1, text.length()));