A medida que el usuario comienza a escribir en un EditText, ¿puede agregar una extensión de archivo al final?
Problema: He estado intentando sin éxito agregar una extensión de archivo que siga al cursor en tiempo real mientras el usuario escribe.
Lo que he intentado: He estado intentando usar .addTextChangedListener()
, que creo que es correcto, pero tengo un problema para hacer que la idea funcione. La depuración muestra que se está ejecutando en un bucle continuo, lo que da la apariencia de congelarse. Miré algunos mensajes aquí en el foro, pero los que sugirieron cuando ingresé este título de publicación trataban sobre prefijos y no sufijos.
Campo de EditText con área resaltada que representa el texto a seguir a la derecha del cursor:
Uno de mis intentos fallidos para hacer que funcione:
private void setupAddDBEditText(){
mDBToAdd.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
if(s.toString().contains(".db"))
mDBToAdd.setText(s.toString().substring(0,s.toString().length()-3));
mDBToAdd.setText(s + ".db");
}
}
davy.ai
Solución:
Para añadir una extensión de archivo que siga el cursor en tiempo real mientras el usuario teclea en un campo EditText, se puede utilizar el método
.addTextChangedListener()
en combinación con una bandera booleana para verificar si la extensión ya ha sido añadida. Aquí tienes una implementación de ejemplo:En este ejemplo, la bandera booleana
extensionAdded
se utiliza para evitar añadir la extensión de archivo repetidamente y causar un bucle infinito. La constanteFILE_EXTENSION
se puede cambiar por la extensión de archivo deseada. El métodoonTextChanged()
no se utiliza en este ejemplo, pero se puede implementar si es necesario.