2010-12-29 47 views
180

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

なし
+0

問題を明記してください。なぜあなたはそれを望んでいますか?実行するコードをトリガーしますか? –

+0

はい、私はボタンクリックのために実行されるコードをトリガーしたいと思います。 – sam

答えて

391

より良い方法はありOnLoadLayoutその関数を呼び出すようにしたいです。

View.performClick(); 

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

これはすべてのあなたの問題に答える必要があります。 以下を提供アンドロイド にコードをボタンのクリックイベントをトリガするには:すべてのビューは、ちょうど述べmoonlightcheese何明確にするなど

+1

しかし、Android用の戻るボタンとは何ですか? –

+0

ボタンのビューを元に戻す方法は? –

+3

携帯電話の戻るボタンの「表示」はありません。それらのボタンを押すためにキーリスナーを使用する必要があります。それはまったく別の問題です。 – moonlightcheese

45

ボタン、スピナー、を含む、この機能を継承し

buttonName.performClick(); 
6

AndroidのcallOnClick()added in API 15)は、時々performClick()よりも私の経験では良い選択となることがあります。ユーザが選択音を有効にしている場合、performClick()は、ユーザが互いに重なり合っている2つの連続した選択音を聞く可能性があります。

2

sender引数を使用しない場合は、ボタンハンドラの実装をリファクタリングして別のものにしてはどうでしょうか(ユーザーが最初にクリックしたときの選択サウンドと、コードを使用して呼び出すボタンのOnClickListener) (ボタンハンドラや他の場所から)どこからでも呼び出すことができます。

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

4

ただ、コードのこのシンプルなラインの書き込み: - :それだ

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

- を次のようにボタンはButtonクラスの参照変数であると定義されて

button.performClick(); 

を。あなたはそれをこのようAPI15を皮切り

private Button btn; 
btn = (Button)findViewById(R.id.button2); 
btn.performClick(); 
10

、あなたは直接接続ビューOnClickListenerを呼び出すこともcallOnClick()を使用することができます。 performClick()とは異なり、これはリスナーを呼び出すだけで、アクセシビリティイベントのレポートなどの関連するクリックアクションは行いません。

関連する問題