なんか何通りか方法はあるっぽいんだけど、一番気に入ったやつで。
とりあえずざっくり
- layoutにボタンを追加
- ボタンにidをつける
- ActivityクラスにOnClickListenerを実装する
- ボタンをidでとってきて、ListenerをActivityクラスに委譲する
buttonの設置
resource/layout
以下にある、activity_なんとか.xml
で、buttonを設置する。xmlで書けばよい。もしくはストーリーボード的なやつで追加する。
ボタンにidプロパティを追加する
こんな感じになるはず
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="おっぱい"
+ android:id="@+id/OppaiButton"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true" />
ActivityクラスにOnClickListenerを実装
こうなる
public class MainEntranceActivity - extends Activity { + extends Activity implements View.OnClickListener {
そうすると、このクラスはonClick
メソッドの実装を求められるので、とりあえず書くだけ書く
public void onClick(View v) { Log.d(this.getLocalClassName(), "おっぱい"); Toast.makeText(this, "おっぱい!おっぱい!", Toast.LENGTH_LONG); // もしこのアクティビティに複数のボタンがある場合は // 引数に来るViewクラスにあるgetIdでswitchとかする }
ここまででは、このクラスがonClickイベントをハンドリングできるだけであって、おっぱいボタンのonClickを受けるようにはなってない。なので、おっぱいボタンのクリックイベントをこのクラスが扱うようにしなければいけない。
Activityでボタンを取得し、このクラスにイベントハンドリングを委譲する
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_なんとか); + // Buttonインスタンスの取得 + Button oppaiButton = (Button)this.findViewById(R.id.OppaiButton); + // ButtonインスタンスのリスナーをこのActivityクラスそのものにする + oppaiButton.setOnClickListener(this); }
おわり。
DRYな備忘録