2010-12-29 11 views
180

Come posso attivare un evento click del pulsante utilizzando il codice in Android? Voglio attivare il clic del pulsante a livello di codice quando si verifica un altro evento.Come simulare un clic del pulsante utilizzando il codice?

stesso problema che sto affrontando

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

codice Button:

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

Ma io voglio chiamare tale funzione OnLoadLayout senza OnClickEvent

+0

puoi specificare il problema? perché lo vuoi? Vuoi attivare un codice per essere eseguito? –

+0

sì, voglio attivare il codice da eseguire per il clic del pulsante. – sam

risposta

391

c'è un modo migliore.

View.performClick(); 

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

questo dovrebbe rispondere a tutti i vostri problemi. ogni vista eredita questa funzione, compreso il tasto, Spinner, ecc

+1

Ma qual è la vista per il pulsante Indietro di Android? –

+0

come si può tornare alla visualizzazione dei pulsanti? –

+3

non c'è "Visualizza" per il pulsante Indietro sul telefono. devi usare gli ascoltatori chiave per ottenere quei pulsanti. questo è un problema completamente diverso. – moonlightcheese

45

Giusto per chiarire che cosa moonlightcheese ha dichiarato: Per attivare un evento click del pulsante tramite il codice in Android fornire le seguenti:

buttonName.performClick(); 
6

Android callOnClick() (added in API 15) può a volte essere una scelta migliore nella mia esperienza di performClick(). Se un utente ha suoni di selezione abilitati, allora performClick() potrebbe far sì che l'utente senta due suoni di selezione continua che sono un po 'sovrapposti l'uno sull'altro che possono essere stonati. (Un suono di selezione per il primo clic del pulsante dell'utente, quindi un altro per il primo pulsante dell'utente

2

Se non si utilizza l'argomento sender, perché non refactoring l'implementazione del gestore di pulsanti per separare funzione, e chiamala da dove vuoi (dal gestore di pulsanti e dall'altra).

In ogni caso, è un design migliore e più pulito - un codice che deve essere chiamato sul gestore di pulsanti E da altri posti merita di essere refactored per la propria funzione. Inoltre, ti aiuterà a separare la gestione dell'interfaccia utente dal codice logico dell'applicazione. Avrai anche un bel nome alla funzione, non solo onDateSelectedButtonClick().

4

Basta scrivere questa semplice riga di codice: -

button.performClick(); 

in cui il pulsante è la variabile di riferimento della classe Button e definito come segue: -

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

Questo è tutto.

10

si può fare in questo modo

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

Partendo API15, è possibile utilizzare anche callOnClick() che chiamano direttamente collegato vista OnClickListener. A differenza di performClick(), questo chiama solo il listener e non esegue alcuna azione di clic associata come la segnalazione di un evento di accessibilità.

Problemi correlati