2012-09-28 89 views
5

的最後一個字符我有一個​​快速的問題。刪除的EditText

我有一些數字,屏幕當您單擊其中一個數字,這個數字被附加到的EditText結束。

input.append(number); 

我也有一個後退按鈕,當用戶點擊這個按鈕,我想刪除的最後一個字符。

此刻,我有以下幾點:

Editable currentText = input.getText(); 

if (currentText.length() > 0) { 
    currentText.delete(currentText.length() - 1, 
      currentText.length()); 
    input.setText(currentText); 
} 

是否有更簡單的方法來做到這一點? input.remove()中的一些東西?

+1

我將注入的keyEvent裏面 – njzk2

回答

10

我意識到這是一個老問題,但它仍然是有效的。如果您自己修剪文本,則在setText()時將光標重置爲開始。因此,而不是(如njzk2提到的),發送假冒的刪除鍵事件,讓這個平臺爲您處理...

//get a reference to both your backButton and editText field 

EditText editText = (EditText) layout.findViewById(R.id.text); 
ImageButton backButton = (ImageButton) layout.findViewById(R.id.back_button); 

//then get a BaseInputConnection associated with the editText field 

BaseInputConnection textFieldInputConnection = new BaseInputConnection(editText, true); 

//then in the onClick listener for the backButton, send the fake delete key 

backButton.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     textFieldInputConnection.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DEL)); 
    } 
}); 
+2

好方法的開始設置你的光標,它的工作!有一點需要注意,代碼*只能模擬*按下「刪除」鍵。爲了刪除工作,「EditText」必須有焦點。您可以'editText.isFocused()'檢查使用,並使用'editText.requestFocus()'關注它。它也會把光標放在最後,所以它會刪除最後一個字符。 –

8

嘗試了這一點,

String str = yourEditText.getText().toString().trim(); 


    if(str.length()!=0){ 
    str = str.substring(0, str.length() - 1); 

    yourEditText.setText (str); 
} 
+3

DEL鍵這不是簡單和不檢查邊界。 – njzk2

+0

這在編輯文本,這是不理想的 –