ボタンをつくる -2/2- (クラスを分けて実装編)
今回の学習も「Androidの館」様のサイトの解説を元に勉強させてもらいます。
1回目はこちら
前回はActivityに直接実装していましたが、今回は専用のクラスに分離して実装するようです。
構成は、
・SampleActivity クラス(メインのクラス)
・ButtonClickListener クラス(onClickを実装するクラス)
■SampleActivity class
public class SampleActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button btn = (Button)findViewById(R.id.sampleButton); btn.setOnClickListener( new ButtonClickListener(this) ); } }
↑「onClick」メソッドは自作クラス(ButtonClickListener)内にあるので
「ButtonClickListener」のインスタンスを代入(引数は、Activity自身である「this」)
「ButtonClickListener」のインスタンスを代入(引数は、Activity自身である「this」)
■ButtonClickListener class
public class ButtonClickListener implements OnClickListener{ private Context context; // コンストラクタ ButtonClickListener(Context c){ context = c; } public void onClick(View v) { Toast.makeText( context.getApplicationContext(), "ボタンが押されました", Toast.LENGTH_LONG).show(); } }
↑「OnClickListener」のインプリメントは
実装されるクラスで行う
実装されるクラスで行う
←呼び出し時の引数「this」を受け取っている
←第1引数にはコンテキストを指定
コンストラクタが受け取った「this」(の内容が格納された「context」)
のgetApplicationContext()メソッドを使う
コンストラクタが受け取った「this」(の内容が格納された「context」)
のgetApplicationContext()メソッドを使う