Spanish Forzar un EditText a que pierda el Foco

psdos

Active Member
Licensed User
Longtime User
Buenas, queria preguntaros si teneis algun truco para fozar a que un EditText pierda el Foco. Quiero hacer que cada vez que el EditText tenga Foco, me borre su contenido, esto lo consigo con este codigo

B4X:
Sub EditText1_FocusChanged (HasFocus As Boolean)
   If HasFocus = True Then 
    EditText1.Text = ""
   End If
End Sub

Pero el problema es que en mi programa no hay mas EditText asi que el Foco no desaparece y me gustaria forzar a que se quitara, por ejemplo cuando pulse en un Button.

Alguna idea?


Un saludo y muchas gracias
 

jota

Active Member
Licensed User
Longtime User
suponiendo que tengas otros objetos puedes usar la propidead RequestFocus para pasar el focus a otro objeto.

Dim b As Button
b.RequestFocus
 

psdos

Active Member
Licensed User
Longtime User
Si que tengo botones, luego probare a hacer eso que me comentas, a ver si me vale para hacer lo que necesito.

Muchas gracias.
 

psdos

Active Member
Licensed User
Longtime User
NJDude, correcto, intente hacer algo como lo que me comento el compañero y como no me dio resultado, segui investigando y al parecer es un fallo del propio SO. Habra alguna manera de hacer un apaño para conseguir lo que quiero? Quizas creando otro EditText oculto y enviarle a el una letra para que tenga Foco aunque no se vea claro está.

Un saludo y mil gracias maestro, una vez más.
 

leonccc

New Member
Licensed User
Longtime User
Hola,
mi primer post, espero sea util, para quitar el focus a un editText hago un requestfocus al panel o actividad que lo contiene, por ejemplo, abajo tengo un codigo que simplifique donde cuando el usuario da el focus a una caja edittext abre un modal donde se dan mas detalles para ingresar el valor, y despues lo asigna a la caja, una vez que termina le da al focus al panel que contiene esta edittext, tambien deberia funcionar con la actividad:
B4X:
Activity.RequestFocus

B4X:
Sub caja_FocusChanged (HasFocus As Boolean)
  Dim send As EditText
  Dim modal As InputDialog
   
  If HasFocus Then
    send = Sender
    modal.InputType=modal.INPUT_TYPE_NUMBERS
    modal.Input=send.Text
    modal.Hint="numeros"
    modal.Show("Ingrese el valor","Numeros","Aceptar","Cancelar","",Null)
    If modal.Response = -1 Then
      send.Text=modal.Input
    End If
  End If
  pnlPrimero.RequestFocus 'Estamos en el primer panel
  Calculos
End Sub

Espero sea util, saludos
 
Top