Spanish Evitar mostrar WebView si se obtiene error de carga en la URL (SOLUCIONADO)

desof

Well-Known Member
Licensed User
Longtime User
Hola Amigos, como puedo evitar que se muestre un WebView si es que se ha producido un error en la carga de la página como por ejemplo el típico 404.

El código usado es este .... pero la hace visible aunque este mal el enlace por ejemplo.


B4X:
Sub Activity_Create(FirstTime As Boolean)    
     Activity.LoadLayout("diapositiva")    
     ProgressDialogShow("Cargando ...")
     web1.LoadUrl("http://www.integralbingo.com.ar/diapo")
  End Sub


Sub web1_PageFinished (Url As String)
    ProgressDialogHide
    web1.Visible=True
End Sub
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola

Podrias hacer esto




B4X:
Sub Process_Globals
  Dim NombrePaginaWeb As String
...
...



Sub Activity_Create(FirstTime As Boolean)   
     Activity.LoadLayout("diapositiva")   
     ProgressDialogShow("Cargando ...")
     NombrePaginaWeb = "http://www.integralbingo.com.ar/diapo"
     web1.LoadUrl(NombrePaginaWeb)
  End Sub


Sub web1_PageFinished (Url As String)
    ProgressDialogHide
    if Url <> NombrePaginaWeb then
      web1.Visible=false 'o lo que tu creas conveniente hacer
    else
      web1.Visible=True
    End Sub


Saludos
 

desof

Well-Known Member
Licensed User
Longtime User
Hola

Podrias hacer esto




B4X:
Sub Process_Globals
  Dim NombrePaginaWeb As String
...
...



Sub Activity_Create(FirstTime As Boolean)  
     Activity.LoadLayout("diapositiva")  
     ProgressDialogShow("Cargando ...")
     NombrePaginaWeb = "http://www.integralbingo.com.ar/diapo"
     web1.LoadUrl(NombrePaginaWeb)
  End Sub


Sub web1_PageFinished (Url As String)
    ProgressDialogHide
    if Url <> NombrePaginaWeb then
      web1.Visible=false 'o lo que tu creas conveniente hacer
    else
      web1.Visible=True
    End Sub


Saludos


Gracias!!!

Tuve que hacer unos cambios por que si el usuario navegaba a otra pagina se desencadena de nuevo el evento asi que lo solucione de esta manera.

B4X:
Sub  ACToolBarDark2_NavigationItemClick
    If Flag Then
        web1.LoadUrl(WEB)
        Flag=False
    Else
        Activity.Finish
    End If   
End Sub

Sub web1_PageFinished (Url As String)
    ProgressDialogHide   
    If Url <> WEB Then
        If Flag =False Then
            web1.Visible=False 'o lo que tu creas conveniente hacer
            ToastMessageShow("NO ES POSIBLE CONECTAR A LA PÁGINA" & Url , False)
        End If
    Else
        Flag=True
        web1.Visible=True
    End If       
End Sub
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola

Me alegro que lo hicieras funcionar

Hay un evento que lo podrias aprovechar para hacer eso e incluso otras cosas:

B4X:
Sub WebView1_OverrideUrl (Url As String) As Boolean
    ' entra al pulsar en una URL nueva
End Sub

A este evento entra cada vez que se pulsa sobre un link y te devuelve la URL pulsada en ese link.
Con esto podrias volver a poner el mensaje de ProgressDialogShow("Cargando ...") , o controlar si se ha ido de la web inicial, por ejemplo, imaginate que la web inicial es www.google.es , si en este evento la Url es www.amazon.es , no permites la carga y cargas la web anterior.
Tambien puedes controlar que siempre navega en la misma web con:
B4X:
if Url.Contains (WEB )= false then Cargo la web anterior o doy mensaje, etc

Bueno, conociendo este evento le puedes sacar mucho partido a lo que quieres hacer.

Saludos
 

desof

Well-Known Member
Licensed User
Longtime User
Hola

Me alegro que lo hicieras funcionar

Hay un evento que lo podrias aprovechar para hacer eso e incluso otras cosas:

B4X:
Sub WebView1_OverrideUrl (Url As String) As Boolean
    ' entra al pulsar en una URL nueva
End Sub

A este evento entra cada vez que se pulsa sobre un link y te devuelve la URL pulsada en ese link.
Con esto podrias volver a poner el mensaje de ProgressDialogShow("Cargando ...") , o controlar si se ha ido de la web inicial, por ejemplo, imaginate que la web inicial es www.google.es , si en este evento la Url es www.amazon.es , no permites la carga y cargas la web anterior.
Tambien puedes controlar que siempre navega en la misma web con:
B4X:
if Url.Contains (WEB )= false then Cargo la web anterior o doy mensaje, etc

Bueno, conociendo este evento le puedes sacar mucho partido a lo que quieres hacer.

Saludos

GEnial muchas gracias amigo !!!!
 

jwgf

Member
Hola, alguien me podría ayudar, por el contrario a la necesidad del amigo desof, yo necesitaría saber cual es el código de error regresado. Otra pregunta si por ejemplo el servidor me devolvió un código 200, y algún dato, por ejemplo un "Ok", como puedo capturar y ver ese dato, gracias, Jorge
 
Top