Spanish SOLUCIONADO Eliminar todos los elementos de un tipo.

Discussion in 'Spanish Forum' started by droman, Mar 4, 2019.

  1. droman

    droman Member Licensed User

    Hola.

    Estoy intentando borrar, desde el código, todos los botones del Activity para poder crearlos de nuevo en base a la elección del usuario.

    Pensé que este sería un buen método, pero no funciona:

    Code:
    For i = 0 To Activity.NumberOfViews - 1
        
    If GetType(Activity.GetView(i))="android.widget.Button" Then
            
    Activity.RemoveViewAt(i)
        
    End If
    Next
    Tengo la extraña sensación de que al eliminar el primer botón, el número de NumberOfViews cambia y en la siguiente iteracción, no puede borrar el siguiente botón.

    Edito:

    Por ahora, he solucionado el problema generando un panel y asociando los botones a este, cuando vuelvo a generarlos, hago un
    Code:
    Panel.RemoveAllViews
    y de esta manera, sí me funciona. De todas formas, sigo interesado en la forma correcta de eliminar todas las vistas de un tipo concreto.

    Muchas gracias.
     
    Last edited: Mar 4, 2019
  2. bgsoft

    bgsoft Well-Known Member Licensed User

    Hola:

    Prueba de cambiar el inicio del bucle por:

    Code:
    For i = Activity.NumberOfViews -1 To 0 Step -1
    Saludos
     
    droman and José J. Aguilar like this.
  3. droman

    droman Member Licensed User


    Efectivamente con este inicio del bucle funciona.

    Muchas gracias bgsoft :)
     
  4. bgsoft

    bgsoft Well-Known Member Licensed User

    De nada Droman.

    Tu mismo ya viste el problema, empezabas a borrar el primer botón y por supuesto que el sistema reorganiza los indices puesto que has borrado el primero, y todos los indices "suben", al hacerlo desde el final no cambias nada y por eso funciona.

    Yo suelo cargar lo que voy a visualizar en un panel, y de esa forma puedo "jugar" con diferentes paneles haciendolos visibles o no, y cuando me interesa descargarlos hago lo que tu hacias de remover el panel, y los protejo de errores, algo asi:

    Code:
    Try
       
    If Panel.IsInitialized Then Panel.RemoveAllViews
    Catch
    End Try
    No te asustes si en Debug te pinta el error de rojo, no se parará la App

    Saludos
     
  5. droman

    droman Member Licensed User

    Creo que efectivamente voy a dejar el sistema del panel, así lo puedo tener todo más controlado, si en un futuro he de añadir un botón para realizar una acción concreta, ya tendría que andar comprobando que botón es el que estoy borrando. Mucho más ordenadito en un panel.
     
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice