java中实现按钮事件监听器的3中方法
最近在看安卓应用开发,看到了这部分,对这部分比较感兴趣,所以查看了一下
1.即使用匿名内部类的方法,这种方法是最常见的,也是最简便的,比较适合简单的设置一个监听器
public class TestEvent1 extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.testevent);
final TextView Text = (TextView) findViewById(R.id.text1);
// 获得句柄
final Button Button1 = (Button) findViewById(R.id.button1);
Button1.setOnClickListener(new OnClickListener() { // 实现行为功能
public void onClick(View v) {
Text.setBackgroundColor(Color.RED);
}
});
}
2.实现OnClickListener()这个接口,比较适合用来在一个地方集中处理点集事件
public class HomeTestActivity extends Activity implements View.OnClickListener{
private Button btn_test_activity;
private Button btn_test_guide;
private Button btn_test_dialog;
private Button btn_test_db;
private Button btn_test_cache;
private Button btn_test_webview;
private TextView tv_info;
@Override
protected void onCreate() {
setContentView(R.layout.activity_home_test);
btn_test_activity = (Button) findViewById(R.id.btn_test_activity);
btn_test_guide = (Button) findViewById(R.id.btn_test_guide);
btn_test_dialog = (Button) findViewById(R.id.btn_test_dialog);
btn_test_db = (Button) findViewById(R.id.btn_test_db);
btn_test_cache = (Button) findViewById(R.id.btn_test_cache);
btn_test_webview = (Button) findViewById(R.id.btn_test_webview);
btn_test_activity.setOnClickListener(this);
btn_test_guide.setOnClickListener(this);
btn_test_dialog.setOnClickListener(this);
btn_test_db.setOnClickListener(this);
btn_test_cache.setOnClickListener(this);
btn_test_webview.setOnClickListener(this);
}
@Override
public void onClick(View v) {
Intent intent = new Intent();
switch (v.getId()){
case R.id.btn_test_activity:
intent.setClass(this, ActivityTestHomePage.class);
break;
case R.id.btn_test_guide:
intent.setClass(this, GuideActivity.class);
break;
case R.id.btn_test_dialog:
intent.setClass(this, DialogActivity.class);
break;
case R.id.btn_test_db:
intent.setClass(this, DBActivity.class);
break;
case R.id.btn_test_cache:
intent.setClass(this, CacheActivity.class);
break;
case R.id.btn_test_webview:
intent.setClass(this, WebViewActivity.class);
default:
return;
}
startActivity(intent);
}
}
3.通过定义实现活动类中的 2 个子类,来实现 View.OnClickListener 这个接口
public class TestEvent3 extends Activity{
static final String TAG = "TestEvent3";
TextView mText;
Button1_OnClickListener mListener1 = new Button1_OnClickListener();
Button2_OnClickListener mListener2 = new Button2_OnClickListener();
class Button1_OnClickListener implements OnClickListener { // 接口的第一个实现
public void onClick(View v) {
mText.setBackgroundColor(Color.RED);
}
}
class Button2_OnClickListener implements OnClickListener { // 接口的第一个实现
public void onClick(View v) {
mText.setBackgroundColor(Color.GREEN);
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.testevent);
mText = (TextView) findViewById(R.id.text1);
final Button mButton1 = (Button) findViewById(R.id.button1);
final Button mButton2 = (Button) findViewById(R.id.button2);
mButton1.setOnClickListener(mListener1);
mButton2.setOnClickListener(mListener2);
}
}