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
 
Cookies are required to use this site. You must accept them to continue using the site. Learn more…