6

我有一个快速的问题。

我有一个带有一些数字的屏幕,当您单击其中一个数字时,该数字会附加到编辑文本的末尾。

input.append(number);

我还有一个后退按钮,当用户单击此按钮时,我想删除最后一个字符。

目前我有以下内容:

Editable currentText = input.getText();

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

有没有更简单的方法来做到这一点?input.remove() 行中有什么东西?

4

2 回答 2

12

我意识到这是一个老问题,但它仍然有效。如果你自己修剪文本,当你 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));
    }
});
于 2014-05-27T15:25:18.640 回答
9

试试这个,

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


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

    yourEditText.setText ( str );
}
于 2012-09-28T08:53:18.980 回答