如何使用代码模拟按钮单击?

时间:2010-12-29 10:43:38

标签: android onclick

如何使用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" />

但我想在没有OnClickEvent的情况下调用该函数OnLoadLayout

7 个答案:

答案 0 :(得分:420)

有更好的方法。

View.performClick();

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

这应该可以解答你所有的问题。每个View都继承了这个函数,包括Button,Spinner等。

答案 1 :(得分:49)

只是为了澄清moonlightcheese所说的: 通过Android中的代码触发按钮单击事件 提供以下内容:

buttonName.performClick();

答案 2 :(得分:11)

你可以这样做

myBluetoothGatt = myBluetoothDevice.connectGatt(context, false, myGattCallback);

答案 3 :(得分:7)

Android的callOnClick()added in API 15)有时候比performClick()更适合我的体验。如果用户启用了选择声音,那么performClick()可能会导致用户听到两个连续的选择声音,这些声音在某种程度上是彼此叠加的,这可能是刺耳的。 (一个选择声音用于用户的第一个按钮点击,然后另一个用于您通过代码调用的另一个按钮OnClickListener。)

答案 4 :(得分:7)

只需编写这段简单的代码: -

button.performClick();

其中button是Button类的引用变量,定义如下: -

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

那就是它。

答案 5 :(得分:4)

从API15开始,您也可以使用直接调用附加视图OnClickListener的callOnClick()。与performClick()不同,它仅调用侦听器,并且不执行任何关联的单击操作,如报告辅助功能事件。

答案 6 :(得分:3)

如果你不使用sender参数,为什么不重构按钮处理程序实现来分离函数,并从你想要的任何地方(从按钮处理程序和其他地方)调用它。

无论如何,它是一个更好更清洁的设计 - 需要在按钮处理程序上调用的代码和来自其他一些地方的代码值得重构为自己的功能。此外,它还可以帮助您将UI处理与应用程序逻辑代码分开。你也可以为这个函数命名,而不仅仅是onDateSelectedButtonClick()。