Android ウィジェットの複数のボタンイベントを識別
Android
ホーム画面に常駐するアプリ「ウィジェット」にボタンを複数配置し,それぞれのボタンに合わせて別々のイベントを設定したい場合の方法
ウィジェットでないアプリ本体ではSwitch文を使ってボタンイベントの分岐をしていたのだが,(僕の場合,)ウィジェットではそれができずに苦戦。
試行錯誤を繰り返し,見付けた方法がこれだ!
//ここから
if (ACTION_BTNCLICK.equals(intent.getAction())) {
//ここにボタンを押したいときにやりたいことを書く
//Activity呼び出しとかとかとか
}
Intent newintent = new Intent();
newintent.setAction(ACTION_BTNCLICK);
PendingIntent pending = PendingIntent.getService(this, 0, newintent, 0);
view.setOnClickPendingIntent(R.id.hoge/*←これはボタンのid*/, pending);
ComponentName widget = new ComponentName(this, Hoge.class);/*←これはWidgetProviderのクラス名*/
manager.updateAppWidget(widget, view);
//ここまでが1つ目
//もっと増やしたいならこれをコピペして2
//ACTION_BTNCLICKに数字でも付けて別の名前にしちゃえばいい!!
if (ACTION_BTNCLICK2.equals(intent.getAction())) {
//ここにボタンを押したいときにやりたいことを書く
//Activity呼び出しとかとかとか
}
Intent newintent = new Intent();
newintent.setAction(ACTION_BTNCLICK2);
PendingIntent pending = PendingIntent.getService(this, 0, newintent, 0);
view.setOnClickPendingIntent(R.id.hoge/*←これはボタンのid*/, pending);
ComponentName widget = new ComponentName(this, Hoge.class);/*←これはWidgetProviderのクラス名*/
manager.updateAppWidget(widget, view);
こんな感じで増やしていけばいくつでも識別できそう!
ちなみに僕は4つボタンを配置して成功してます!
追加した分だけManifestへの追記もお忘れなく!
下記ページを参考にさせていただきました。
ありがとうございます。
http://sites.google.com/site/tuyano/java/android/11