Jak mogę wywołać zdarzenie kliknięcia przycisku przy użyciu kodu w systemie Android? Chcę uruchomić programowo kliknięcie przycisku, gdy wystąpi inne zdarzenie.
Ten sam problem, przed którym stoję
public void onDateSelectedButtonClick(View v){
/*Something Alarm Management
http://www.java2s.com/Code/Android/Core-Class/Alarmdemo.htm
copied code from this site*/
}
Kod przycisku:
<Button
android:onClick="onDateSelectedButtonClick"
android:text="Set notification for this date" />
Ale chcę wywołać tę funkcję OnLoadLayout bez OnClickEvent
Odpowiedzi:
jest lepszy sposób.
http://developer.android.com/reference/android/view/View.html#performClick ()
to powinno odpowiedzieć na wszystkie twoje problemy. każdy widok dziedziczy tę funkcję, w tym przycisk, pokrętło itp.
Dla wyjaśnienia, View nie ma statycznej metody performClick (). Musisz wywołać performClick () w instancji View. Na przykład nie możesz po prostu zadzwonić
Zamiast tego zrób coś takiego:
źródło
Aby wyjaśnić, co powiedział moonlightcheese: Aby wywołać zdarzenie kliknięcia przycisku za pomocą kodu w Androidzie, wykonaj następujące czynności:
źródło
możesz to zrobić w ten sposób
źródło
Android
callOnClick()
( dodany w API 15 ) może czasem być lepszym wyborem z mojego doświadczenia niżperformClick()
. Jeśli użytkownik ma włączone dźwięki selekcji,performClick()
może usłyszeć dwa ciągłe dźwięki selekcji, które są nieco ułożone warstwami jeden na drugim, co może powodować zgrzyt. (Jeden dźwięk wyboru dla pierwszego kliknięcia przycisku użytkownika, a następnie inny dla przyciskuOnClickListener
, do którego dzwonisz za pomocą kodu).źródło
Po prostu napisz ten prosty wiersz kodu: -
gdzie button jest zmienną referencyjną klasy Button i jest zdefiniowany w następujący sposób:
Otóż to.
źródło
Począwszy od API15, można również użyć
callOnClick()
tego bezpośredniego wywołania dołączonego widoku OnClickListener. W przeciwieństwie do performClick (), wywołuje to tylko detektor i nie wykonuje żadnych powiązanych działań kliknięcia, takich jak zgłaszanie zdarzenia dostępności.źródło
Jeśli nie użyjesz
sender
argumentu, dlaczego nie przefakturuj implementacji modułu obsługi przycisków do oddzielenia funkcji i wywołaj ją z dowolnego miejsca (z modułu obsługi przycisków i z innego miejsca).W każdym razie jest to lepszy i czystszy projekt - kod, który należy wywołać w module obsługi przycisków ORAZ z innych miejsc, zasługuje na refaktoryzację do własnej funkcji. Ponadto pomoże ci oddzielić obsługę interfejsu użytkownika od kodu logicznego aplikacji. Będziesz także mieć przyjemną nazwę dla funkcji, nie tylko onDateSelectedButtonClick ().
źródło