volumen studio recientes power para los home habilitar despues deshabilitar desactivar como botones boton atras app android layout button

recientes - deshabilitar boton despues de click android studio



¿Cómo deshabilitar un botón de Android? (9)

¿Intentaste esto?

myButton.setEnabled(false);

Actualización: Gracias a Gwen. Casi olvido que android:clickable puede android:clickable en su diseño XML para determinar si se puede hacer clic en un botón o no.

He creado un diseño que contiene dos botones, Siguiente y Anterior. Entre los botones estoy generando algunas vistas dinámicas. Entonces, cuando inicie la aplicación por primera vez, quiero desactivar el botón "Anterior", ya que no habrá vistas anteriores. También quiero desactivar el botón "Siguiente" cuando no haya más vistas para mostrar. ¿Hay alguna forma de deshabilitar los botones?


En Java, una vez que tenga la referencia del botón:

Button button = (Button) findviewById(R.id.button);

Para habilitar / deshabilitar el botón, puede utilizar:

button.setEnabled(false); button.setEnabled(true);

O:

button.setClickable(false); button.setClickable(true);

Ya que desea deshabilitar el botón desde el principio, puede usar button.setEnabled (false); en el método onCreate. De lo contrario, desde XML, puede utilizar directamente:

android:clickable = "false"

Asi que:

<Button android:id="@+id/button" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="@string/button_text" android:clickable = "false" />


En Kotlin, si refiere la Vista de botones con id, habilite / deshabilite el botón como

layout.xml

<Button android:id="@+id/btn_start" android:layout_width="100dp" android:layout_height="50dp" android:text="@string/start" android:layout_alignParentBottom="true"/>

actividad.kt

btn_start.isEnabled = true //to enable button btn_start.isEnabled = false //to disable button


En mi caso,

myButton.setEnabled(false); myButton.setEnabled(true);

funciona bien y habilita y deshabilita el botón como debería. Pero una vez que el estado del botón se deshabilita, nunca vuelve al estado habilitado, aunque se puede hacer clic. Intenté invalidar y actualizar el estado dibujable, pero no tuve suerte.

myButton.invalidate(); myButton.refreshDrawableState();

Si usted o alguien que tiene un problema similar, lo que funciona para mí es establecer el dibujable de fondo nuevamente. Funciona en cualquier nivel de API.

myButton.setEnabled(true); myButton.setBackgroundDrawable(activity.getResources().getDrawable(R.drawable.myButtonDrawable));


No puede habilitarlo o deshabilitarlo en su XML (ya que su diseño está configurado en tiempo de ejecución), pero puede establecer si se puede hacer clic en el inicio de la actividad con android:clickable .


Sí, se puede deshabilitar en XML usando <Button android:enabled="false" />


Solo escribe una sola línea de código en tu actividad

Button btn = (Button) findViewById(R.id.button1); btn.setEnabled(false);

Cuando quieras habilitar el mismo botón solo escribe

Button btn = (Button) findViewById(R.id.button1); btn.setEnabled(true);


primero en xml crea el botón como android:clickable="false"

<Button android:id="@+id/btn_send" android:clickable="false"/>

luego en su código, dentro del método oncreate() establezca la propiedad del botón como

btn.setClickable(true);

luego dentro del botón haga clic en cambiar el código en

btn.setClickable(false); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); btnSend = (Button) findViewById(R.id.btn_send); btnSend.setClickable(true); btnSend.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { btnSend.setClickable(false); } }); }


¡¡¡INCORRECTO EN LA ESCUCHADORA PARA USAR VARIABLE EN SU LUGAR DEL PARÁMETRO !!!

btnSend.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { btnSend.setClickable(false); } });

MANERA CORRECTA:

btnSend.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { /** check given view by assertion or cast as u wish */ if(v instance of Button) { /** cast */ Button button = (Button) v; /** we can perform some check up */ if(button.getId() == EXPECTED_ID) { /** disable view */ button.setEnabled(false) button.setClickable(false); } } else { /** you can for example find desired view by root view */ Button bt = (Button) v.getRootView().findViewById(R.id.btId); /*check for button */ if(bt!=null) { /** disable button view */ ... } else { /** according to @jeroen-bollen remark * we made assumption that we expected a view * of type button here in other any case */ throw new IllegalArgumentException("Wrong argument: " + "View passed to method is not a Button type!"); } } } });

EDITAR: En respuesta a @ jeroen-bollen

View.OnClickListener

es la definición de interfaz para que se invoque una devolución de llamada cuando se hace clic en una vista.

con definición de método

void onClick(View v);

cuando se hace clic en la vista, el objeto de la clase Ver hace una devolución de llamada al método onClick () enviando como parámetro, por lo que el parámetro de vista nulo no debería ocurrir si lo hace, es un error de aserción. ejemplo recogido por GC) o el método fue manipulado debido a un hackeo

poco sobre instanceof & null

JLS / 15.20.2. Operador de comparación de tipo

En el tiempo de ejecución, el resultado del operador instanceof es verdadero si el valor de RelationalExpression no es nulo y la referencia podría convertirse en el ReferenceType sin generar una excepción ClassCastException.

De lo contrario el resultado es falso .

tres palabras del autor

SI UD PREGUNTA POR QUÉ?

Principalmente para evitar NullPointerException

Poco más código ahorrará tiempo en el posterior seguimiento de errores en su código y reducirá la aparición de anomalías.

Considere el siguiente ejemplo:

View.OnClickListener listener = new OnClickListener() { @Override public void onClick(View v) { btnSend.setClickable(false); } }); btnSend.setOnClickListener(listener) btnCancel.setOnClickListener(listener)