web-dev-qa-db-ja.com

コードを使用してボタンクリックをシミュレートする方法は?

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関数を呼び出したい

201
sam

より良い方法があります。

View.performClick();

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

これですべての問題に答えられるはずです。すべてのビューは、ボタン、スピナーなどを含むこの関数を継承します。

422
moonlightcheese

Moonlightcheeseが述べたことを明確にするために:Androidのコードを介してボタンクリックイベントをトリガーするには、以下を提供します。

buttonName.performClick();
49
Scott Tovey

この方法でできます

private Button btn;
btn = (Button)findViewById(R.id.button2);
btn.performClick();
11
Tushar Saha

次の簡単なコード行を書くだけです。

button.performClick();

buttonはButtonクラスの参照変数であり、次のように定義されます。

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

それでおしまい。

7
Deepak Sharma

私の経験では、AndroidのcallOnClick()API 15に追加 )がperformClick()よりも良い選択になることがあります。ユーザーの選択音が有効になっている場合、performClick()により、ユーザーが互いに重なった2つの連続した選択音が耳障りになる可能性があります。 (ユーザーの最初のボタンクリックに対して1つの選択音が鳴り、次にコードを介して呼び出している他のボタンのOnClickListenerに対して別の選択音が鳴ります。)

7
Charles Madere

API15以降では、アタッチされたビューOnClickListenerを直接呼び出すcallOnClick()も使用できます。 performClick()とは異なり、これはリスナーのみを呼び出し、アクセシビリティイベントの報告などの関連するクリックアクションは行いません。

4
Colateral

sender引数を使用しない場合は、ボタンハンドラーの実装をリファクタリングして機能を分離し、必要な場所(ボタンハンドラーや他の場所)から呼び出すようにしてください。

とにかく、それはより良く、よりクリーンな設計です-ボタンハンドラで呼び出され、他のいくつかの場所から呼び出される必要があるコードは、独自の関数にリファクタリングされるに値します。さらに、UI処理をアプリケーションロジックコードから分離するのに役立ちます。 onDateSelectedButtonClick()だけでなく、関数の名前もわかります。

3
d.popov