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


216

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


問題を特定していただけますか?なぜそれが欲しいのですか?実行するコードをトリガーしますか?
ウラジミールイワノフ2010

はい、ボタンをクリックしたときに実行されるコードをトリガーします。
サム

回答:


445

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

View.performClick();

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

これですべての問題が解決されます。Button、Spinnerなど、すべてのビューがこの関数を継承します。

明確にするために、Viewには静的なperformClick()メソッドがありません。ViewのインスタンスでperformClick()を呼び出す必要があります。例えば、あなたはただ電話することはできません

View.performClick();

代わりに、次のようにします。

View myView = findViewById(R.id.myview);
myView.performClick();

2
しかし、View for Androidの戻るボタンとは何ですか?
Peter Ajtai、

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

3
@moon-他のユーザーにあなたのコメントを通知したい場合は、「@」と通知したいユーザーの最初の数文字で始めます... not)
Peter Ajtai 2012年

14
この回答に示されているコードは少し混乱しています。明確にするために、Viewには静的なperformClick()メソッドがありません。ViewのインスタンスでperformClick()を呼び出す必要があります。
ルカシュWiklendt

3
何をしているのかわからない場合だけ混乱します。
moonlightcheese

52

moonlightcheeseの発言を明確にするために:Androidのコードでボタンクリックイベントをトリガーするには、次のように指定します。

buttonName.performClick();

12

あなたはこの方法でそれを行うことができます

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

7

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


7

この単純なコード行を書くだけです:-

button.performClick();

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

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

それでおしまい。


6

API15以降では、callOnClick()アタッチされたビューOnClickListenerを直接呼び出すこともできます。performClick()とは異なり、これはリスナーを呼び出すだけで、ユーザー補助イベントの報告などの関連するクリック操作は行いません。


4

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.