2010-12-29 20 views
180

¿Cómo puedo activar un evento de clic de botón usando el código en Android? Quiero activar el botón clic programáticamente cuando ocurre algún otro evento.¿Cómo simular un botón hacer clic usando el código?

mismo problema que estoy enfrentando

public void onDateSelectedButtonClick(View v){ 
    /*Something Alarm Management 
    http://www.java2s.com/Code/Android/Core-Class/Alarmdemo.htm 
    copied code from this site*/ 
} 

código del botón:

<Button 
    android:onClick="onDateSelectedButtonClick" 
    android:text="Set notification for this date" /> 

Pero quiero llamar a esa función OnLoadLayout sin OnClickEvent

+0

¿Puede por favor especificar el problema? ¿Por qué quieres eso? ¿Desea activar algún código para ser ejecutado? –

+0

sí, quiero activar el código que se ejecutará para el clic del botón. – sam

Respuesta

391

hay una manera mejor.

View.performClick(); 

http://developer.android.com/reference/android/view/View.html#performClick()

esto debe responder a todas sus problemas. cada Ver hereda esta función, incluyendo Button, Spinner, etc.

+1

Pero, ¿qué es la Vista para el botón Atrás de Android? –

+0

¿cómo se puede recuperar la vista de botón? –

+3

no hay "Vista" para el botón Atrás en su teléfono. necesita usar oyentes clave para obtener esos botones presionados. ese es un problema diferente por completo. – moonlightcheese

45

Solo para aclarar lo moonlightcheese declaró: Para desencadenar un evento de clic de botón a través del código de Android proporcionar lo siguiente:

buttonName.performClick(); 
6

de Android callOnClick() (added in API 15) a veces puede ser una mejor opción en mi experiencia que performClick(). Si un usuario tiene activados los sonidos de selección, entonces performClick() podría hacer que el usuario escuche dos sonidos de selección continua que están un tanto superpuestos unos encima de otros y pueden ser discordantes. (Un sonido de selección para el primer clic del usuario, y luego otro para el otro botón OnClickListener que está llamando por código.)

2

Si no utiliza el argumento sender, ¿por qué no refactorizar la implementación del manejador de botones para separar función, y llámalo desde donde quieras (desde el controlador de botón y desde el otro lugar).

De todos modos, es un diseño mejor y más limpio - un código que debe llamarse en el controlador de botones Y de algunos otros lugares merece ser refactorizado para su propia función. Además, le ayudará a separar el manejo de la interfaz de usuario del código lógico de la aplicación. También tendrá un buen nombre para la función, no solo onDateSelectedButtonClick().

4

acaba de escribir esta simple línea de código: -

button.performClick(); 

donde el botón es la variable de referencia de la clase Button y se define de la siguiente manera: -

private Button buttonToday ; 
buttonToday = (Button) findViewById(R.id.buttonToday); 

eso es todo.

10

puede hacerlo de esta manera

private Button btn; 
btn = (Button)findViewById(R.id.button2); 
btn.performClick(); 
1

A partir de API15, puede utilizar también callOnClick() que llame directamente unida vista OnClickListener. A diferencia de performClick(), esto solo llama al oyente y no realiza ninguna acción de clic asociada, como informar un evento de accesibilidad.

Cuestiones relacionadas