2012-09-28 39 views
5

Tengo una pregunta rápida.Borrar el último carácter de edittext

Tengo una pantalla con algunos números, cuando hace clic en uno de los números, el número se agrega al final del texto de edición.

input.append(number); 

También tengo un botón de retroceso, cuando el usuario hace clic en este botón, quiero eliminar el último carácter.

En el momento en que tienen las siguientes:

Editable currentText = input.getText(); 

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

¿Existe una manera más fácil de hacer esto? Algo en la línea de input.remove()?

+1

i inyectaría un KeyEvent con la llave del interior – njzk2

Respuesta

10

que dan cuenta de esto es una cuestión de edad, sino que sigue siendo válida. Si recorta el texto usted mismo, el cursor se reiniciará al inicio cuando configureText(). Así que en vez (como se ha mencionado por njzk2), enviar un falso evento de eliminación de clave y dejar que la plataforma de manejarlo para usted ...

//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

¡Buen enfoque, y está funcionando! Una cosa que debe tenerse en cuenta, el código * solo simula * presionando la tecla "Eliminar". Para que la eliminación funcione, el 'EditText' debe tener el foco. Puede verificar usando 'editText.isFocused()', y usar 'editText.requestFocus()' para enfocarlo. También colocará el cursor al final, por lo que eliminará el último carácter. –

8

probar esto,

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


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

    yourEditText.setText (str); 
} 
+3

Esto no es simple y no lo hace ver los límites. – njzk2

+0

Esto establece el cursor al comienzo del texto de edición, que no es ideal –

Cuestiones relacionadas