He creado un diseño que contiene dos botones, Siguiente y Anterior. Entre los botones estoy generando algunas vistas dinámicas. Entonces, cuando inicio la aplicación por primera vez, quiero deshabilitar el botón "Anterior" ya que no habrá vistas anteriores. También quiero desactivar el botón "Siguiente" cuando no hay más vistas para mostrar. ¿Hay alguna forma de deshabilitar los botones?
371
No puede habilitarlo o deshabilitarlo en su XML (ya que su diseño está configurado en tiempo de ejecución), pero puede configurarlo si se puede hacer clic en el inicio de la actividad con
android:clickable
.fuente
Simplemente escriba una sola línea de código en su actividad
Cuando quieras habilitar el mismo botón solo escribe
fuente
((Button)findViewById(R.id.mybutton)).setEnabled(false);
Sí, se puede deshabilitar en XML simplemente usando:
fuente
android:enabled
cuándo comienzas a escribirlo. (Incluso hasta el día de hoy.)setEnabled
funcionaEn Java, una vez que tenga la referencia del botón:
Para habilitar / deshabilitar el botón, puede usar:
O:
Como desea deshabilitar el botón desde el principio, puede usar button.setEnabled (false); en el método onCreate. De lo contrario, desde XML, puede usar directamente:
Entonces:
fuente
En mi caso,
está funcionando bien y está habilitando y deshabilitando el botón como debería. Pero una vez que el estado del botón se deshabilita, nunca vuelve al estado habilitado nuevamente, aunque se puede hacer clic en él. Intenté invalidar y refrescar el estado dibujable, pero no tuve suerte.
Si usted o alguien que tiene un problema similar, lo que funciona para mí es configurar el fondo dibujable nuevamente. Funciona en cualquier nivel de API.
fuente
En Kotlin, si hace referencia a la Vista de botones con id, active / desactive el botón como
layout.xml
actividad.kt
fuente
primero en xml haz el botón como
android:clickable="false"
luego en su código, dentro del
oncreate()
método establezca la propiedad del botón comoluego dentro del botón, haga clic en cambiar el código en
fuente
MANERA INCORRECTA EN EL ESCUCHADOR PARA USAR VARIABLE EN LUGAR DEL PARÁMETRO !!!
MANERA CORRECTA:
EDITAR: en respuesta a @ jeroen-bollen
cuando se hace clic en la vista, el objeto de la clase Ver hace una devolución de llamada al método onClick () que se envía como parámetro en sí mismo, por lo que el parámetro de vista nula no debería ocurrir si lo hace es un Error de aserción , por ejemplo, cuando la clase de objeto Ver se destruyó mientras tanto (para ejemplo recogido por GC) o el método fue alterado debido a un pirateo
poco sobre instanceof & null
tres palabras del autor
SI PREGUNTAS POR QUÉ
PARA EVITAR NULLPointerException
Un poco más de código le ahorrará tiempo en el seguimiento posterior de errores en su código y reduce la aparición de anomalías.
considere el siguiente ejemplo:
fuente
v
no es unaButton
.Con Kotlin puedes hacer,
fuente