Ответ 1
есть лучший способ.
View.performClick();
http://developer.android.com/reference/android/view/View.html#performClick()
это должно ответить на все ваши проблемы. каждый вид наследует эту функцию, включая Button, Spinner и т.д.
Как я могу вызвать событие нажатия кнопки с помощью кода на Android? Я хочу, чтобы кнопка нажала кнопку программно, когда происходит какое-то другое событие.
Те же проблемы, с которыми я сталкиваюсь
public void onDateSelectedButtonClick(View v){
/*Something Alarm Management
http://www.java2s.com/Code/Android/Core-Class/Alarmdemo.htm
copied code from this site*/
}
Код кнопки:
<Button
android:onClick="onDateSelectedButtonClick"
android:text="Set notification for this date" />
Но я хочу вызвать эту функцию OnLoadLayout без OnClickEvent
есть лучший способ.
View.performClick();
http://developer.android.com/reference/android/view/View.html#performClick()
это должно ответить на все ваши проблемы. каждый вид наследует эту функцию, включая Button, Spinner и т.д.
Просто чтобы уточнить, что сказал лунный свет: Чтобы вызвать событие нажатия кнопки с помощью кода в Android укажите следующее:
buttonName.performClick();
вы можете сделать это таким образом
private Button btn;
btn = (Button)findViewById(R.id.button2);
btn.performClick();
Android callOnClick()
(добавлен в API 15) иногда может быть лучшим выбором в моем опыте, чем performClick()
. Если у пользователя есть звуки выбора, то performClick()
может привести к тому, что пользователь услышит два звуковых сигнала непрерывного выбора, которые несколько накладываются друг на друга, что может быть резким. (Один звук выбора для первого нажатия кнопки пользователя, а затем другой для другой кнопки OnClickListener
, которую вы вызываете через код.)
Просто напишите эту простую строку кода: -
button.performClick();
где кнопка является ссылочной переменной класса Button и определяется следующим образом: -
private Button buttonToday ;
buttonToday = (Button) findViewById(R.id.buttonToday);
Что это.
Если вы не используете аргумент sender
, почему бы не реорганизовать реализацию обработчика кнопок для разделения функции и вызвать ее из любой точки (из обработчика кнопки и из другого места).
Во всяком случае, это лучший и более чистый дизайн - код, который нужно вызвать в обработчике кнопок. И из некоторых других мест заслуживает реорганизации для собственной функции. Кроме того, это поможет вам разделить обработку пользовательского интерфейса с кодом логики приложения. У вас также будет хорошее имя для функции, а не только onDateSelectedButtonClick().
Начиная с API15, вы также можете использовать callOnClick()
, которые непосредственно вызывают прикрепленный вид OnClickListener. В отличие от performClick(), это вызывает только прослушиватель и не выполняет никаких связанных действий щелчка, таких как сообщение о событии доступности.