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関数を呼び出したい
より良い方法があります。
View.performClick();
http://developer.Android.com/reference/Android/view/View.html#performClick()
これですべての問題に答えられるはずです。すべてのビューは、ボタン、スピナーなどを含むこの関数を継承します。
Moonlightcheeseが述べたことを明確にするために:Androidのコードを介してボタンクリックイベントをトリガーするには、以下を提供します。
buttonName.performClick();
この方法でできます
private Button btn;
btn = (Button)findViewById(R.id.button2);
btn.performClick();
次の簡単なコード行を書くだけです。
button.performClick();
buttonはButtonクラスの参照変数であり、次のように定義されます。
private Button buttonToday ;
buttonToday = (Button) findViewById(R.id.buttonToday);
それでおしまい。
私の経験では、AndroidのcallOnClick()
( API 15に追加 )がperformClick()
よりも良い選択になることがあります。ユーザーの選択音が有効になっている場合、performClick()
により、ユーザーが互いに重なった2つの連続した選択音が耳障りになる可能性があります。 (ユーザーの最初のボタンクリックに対して1つの選択音が鳴り、次にコードを介して呼び出している他のボタンのOnClickListener
に対して別の選択音が鳴ります。)
API15以降では、アタッチされたビューOnClickListenerを直接呼び出すcallOnClick()
も使用できます。 performClick()とは異なり、これはリスナーのみを呼び出し、アクセシビリティイベントの報告などの関連するクリックアクションは行いません。
sender
引数を使用しない場合は、ボタンハンドラーの実装をリファクタリングして機能を分離し、必要な場所(ボタンハンドラーや他の場所)から呼び出すようにしてください。
とにかく、それはより良く、よりクリーンな設計です-ボタンハンドラで呼び出され、他のいくつかの場所から呼び出される必要があるコードは、独自の関数にリファクタリングされるに値します。さらに、UI処理をアプリケーションロジックコードから分離するのに役立ちます。 onDateSelectedButtonClick()だけでなく、関数の名前もわかります。