Androidアプリを作ろう08 ウィジェット②

ウィジェットにクリックイベントを組み込む

目次

  1. クリックしたらトーストが動くウィジェット
  2. おみくじアプリを作る
  3. プログラムの解説
  4. さいごに

クリックしたらトーストが動くウィジェット

前回はウィジェットの起動までを学習しました。
今度はウィジェットにクリックイベントを組み込んでみましょう。
まずは、前回と同様に新しいプロジェクトを作り、ウィジェットクラスを作成します。
今回はウイジェットをクリックするとランダムなメッセージのトーストがポップアップする仕組みです。
ウィジェットのクリックを受け取るためにはインテントフィルタを登録する必要があります。
インテントフィルタはAndroidManifest.xmlに記述します。

<action android:name=”CLICK_WIDGET”/>の部分がクリックをしたときに送信されるアクション名になります。

おみくじアプリを作る

では以下のプログラムを実行してください。

実行結果は以下のようになります。
画面中央におみくじの結果が表示されます。

プログラムの解説

ウィジェットのクリックはクリックしたタイミングでインテントを発行し、これを自分自身で受け取ることによって処理します。
これにはペンディングインテントを利用します。
このプログラムの中では、クリックを識別する文字列「CLICK_WIDGET」をあらかじめ決めておきます。
インテントではこの文字列をアクションとして発行し、getBroadcast()メソッドでブロードキャストするようにしています。
そしてリモートビューのsetOnClickPendingIntent()メソッドでペンディングインテントを登録します。
これでウィジェットがクリックしたときにインテントが発行されます。
このアプリはアクションを受け取るフィルタを登録していますので、クリックしたときに自分自身でアクションを受け取ります。
そのとき、onReceive()メソッドが呼び出されるので、このメソッド内でランダム表示の処理を行っています。
また、画面中央でカスタムしたトーストを表示させるためにviewToast()メソッドを自作しています。

さいごに

ちょっとコード量が多いですが、そんなに苦労することなくアプリは動くと思います。
ウィジェットの場合はエラーがわかりにくいのできちんと確認しながらのコードの入力を心がけてください。
また、あっているはずなのにウィジェットが動かない場合はアプリのアンインストールをしてからもう一度インストールをするといいかもしれません。

このサイトをフォローする!