FC2ブログ
HOME   »  スポンサー広告  »  スポンサーサイト   »  Android  »  [Android]Buttonを押さずにonClickイベントを発生させる

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[Android]Buttonを押さずにonClickイベントを発生させる

Buttonを押さずにonClickイベントを発生させる方法。

Button(View)のsetOnClickListenerメソッドでOnClickListener(インタフェースを実装したクラスのインスタンス)を設定しておくと、Buttonが押された際にOnClickListenerのonClickメソッドが呼び出される。
通常は物理的にButtonを押す(クリックする)ことによりこのonClickメソッドが呼び出されるが、Buttonを押す代わりにButton(View)のperformClickメソッドを実行することでもonClickメソッドを呼び出すことができる。

ViewクラスのソースコードでperformClickメソッドを見ると、
public boolean performClick() {
    sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_CLICKED);

    if (mOnClickListener != null) {
        playSoundEffect(SoundEffectConstants.CLICK);
        mOnClickListener.onClick(this);
        return true;
    }

    return false;
}
となっており、mOnClickListener(setOnClickListenerメソッドで設定したOnClickListener)のonClickメソッドが実行されている。

以下の例で確認してみる。

まず、下記の様なButton 2個とTextView 1個のActivityを準備する。

ClickTest1

Activityの実装は以下の通り。
public class MainActivity extends Activity implements View.OnClickListener {
    private Button button1;
    private Button button2;
    private TextView textView1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        button1 = (Button) findViewById(R.id.button1);
        button2 = (Button) findViewById(R.id.button2);
        textView1 = (TextView) findViewById(R.id.textView1);
        button1.setOnClickListener(this);
        button2.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        if (v == button1) {
            button2.performClick();
        } else if (v == button2) {
            textView1.setText("Click button2");
        }
    }
}
13行目と14行目で各Button(button1とbutton2)のOnClickListenerとしてMainActivity自らを設定し、18行目からonClickメソッドを実装。
onClickメソッドの中では、button1が押されたらbutton2のperformClickメソッドを実行し、button2が押されたらtextView1に"Click button2"と表示する様にしている。

以上を実行してbutton1を押してみると、

ClickTest2

あたかもbutton2が押されたかの様に動作し、textView1に"Click button2"と表示されている。

このperformClickメソッドは、テスト等で擬似的にButton押下の動作をさせる際に使用できる。


関連記事
Comment
初めまして
コメントでのご連絡失礼します。
この旅は是非、相互リンクさせていただきたいと思いコメントさせていただきました。

Androidアプリ開発ツール「AppInventor」についてブログを描いています。
開発方法は異なりますが、同じアプリ開発というテーマでしたのでよろしかったら相互リンクさせていただけないでしょうか?

あぷいん倶楽部
http://appinclub.blog.shinobi.jp/
コメントありがとうございます
あぷいん倶楽部 管理人 様

コメント&リンクありがとうございます。
こちらからもリンクさせていただきました。

「App Inventor」の様なプログラミングへのアプローチ方法もおもしろいなぁ、と思います。

今後ともよろしくお願い致します。
Trackback
Trackback URL
Comment Form
管理者にだけ表示を許可する
プロフィール

まさお

Author:まさお
プログラミングは趣味レベルなので、お手柔らかに。

ブログランキング
ブログランキング参加中。是非クリックお願いします。


にほんブログ村 IT技術ブログ Androidアプリ開発へ

人気ブログランキングへ

ブログランキング



ブログ王

ブログランキング【ブログの惑星】

プログラム人気ブログランキング
最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム
QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。