①外部クラスでリスナーを生成し
②リスナーをViewに登録する。
一般的には外部クラスでリスナー生成はしない。
理由としては主に
①イベントは特定のGUI画面に所属するものなので、外部クラスにするのは集約面でよくない
②外部クラスでリスナーを生成すると自由にEventSource内のコンポーネントに自由のアクセスできない場合が多々あるので、
コーディング面でよくない
*Layoutは省略。
OuterClassEvent.java |
package com.example.liguofeng.outerclassevent;
import android.app.Activity; import android.view.View; import android.widget.Toast;
// ①外部クラスでリスナー public class OuterClassEvent implements View.OnClickListener {
Activity act; public OuterClassEvent(Activity act) { this.act = act; } @Override public void onClick(View v) { Toast.makeText(act, "外部クラスで生成されたリスナーです。", Toast.LENGTH_SHORT).show(); } }
|
MainActivity.java |
package com.example.liguofeng.outerclassevent;
import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.Button;
public class MainActivity extends AppCompatActivity { Button outerClassBtn;
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
outerClassBtn = (Button) findViewById(R.id.outerClassBtn); outerClassBtn.setOnClickListener(new OuterClassEvent(this)); // ② リスナー設定 } }
|