Wie kann ich ein Button-Click-Ereignis mithilfe von Code in Android auslösen? Ich möchte den Klick auf die Schaltfläche programmgesteuert auslösen, wenn ein anderes Ereignis eintritt.
Gleiches Problem, mit dem ich konfrontiert bin
public void onDateSelectedButtonClick(View v){
/*Something Alarm Management
http://www.java2s.com/Code/Android/Core-Class/Alarmdemo.htm
copied code from this site*/
}
Schaltflächencode:
<Button
android:onClick="onDateSelectedButtonClick"
android:text="Set notification for this date" />
Aber ich möchte diese Funktion OnLoadLayout ohne OnClickEvent aufrufen
Antworten:
Es gibt einen besseren Weg.
http://developer.android.com/reference/android/view/View.html#performClick ()
Dies sollte alle Ihre Probleme beantworten. Jede Ansicht erbt diese Funktion, einschließlich Button, Spinner usw.
Zur Verdeutlichung verfügt View nicht über eine statische performClick () -Methode. Sie müssen performClick () für eine Instanz von View aufrufen. Zum Beispiel können Sie nicht einfach anrufen
Tun Sie stattdessen etwas wie:
quelle
Nur um zu verdeutlichen, was Moonlightcheese gesagt hat: Um ein Schaltflächenklickereignis durch Code in Android auszulösen, gehen Sie wie folgt vor:
quelle
Sie können es auf diese Weise tun
quelle
Android
callOnClick()
( hinzugefügt in API 15 ) kann meiner Erfahrung nach manchmal die bessere Wahl sein alsperformClick()
. Wenn für einen Benutzer Auswahlgeräusche aktiviert sind, kannperformClick()
dies dazu führen, dass der Benutzer zwei fortlaufende Auswahlgeräusche hört, die etwas übereinander liegen und störend wirken können. (Ein Auswahlton für den ersten Tastenklick des Benutzers und ein anderer für die anderen Tasten,OnClickListener
die Sie per Code aufrufen.)quelle
Schreiben Sie einfach diese einfache Codezeile: -
Dabei ist button die Referenzvariable der Button-Klasse und wie folgt definiert: -
Das ist es.
quelle
Ab API15 können Sie auch
callOnClick()
die direkt angehängte Ansicht OnClickListener aufrufen. Im Gegensatz zu performClick () ruft dies nur den Listener auf und führt keine zugehörigen Klickaktionen wie das Melden eines Eingabehilfenereignisses aus.quelle
Wenn Sie das
sender
Argument nicht verwenden, können Sie die Implementierung des Schaltflächenhandlers umgestalten, um die Funktion zu trennen, und sie von jedem beliebigen Ort aus aufrufen (vom Schaltflächenhandler und von der anderen Stelle).Auf jeden Fall ist es ein besseres und saubereres Design - ein Code, der auf dem Button-Handler aufgerufen werden muss UND von einigen anderen Stellen aus verdient, in eine eigene Funktion umgestaltet zu werden. Außerdem können Sie damit die Benutzeroberfläche besser vom Anwendungslogikcode trennen. Sie haben auch einen schönen Namen für die Funktion, nicht nur onDateSelectedButtonClick ().
quelle