接著上次為Activity定義新的生命周期講的繼續(xù)說(shuō),現(xiàn)在給按鈕添加一個(gè)點(diǎn)擊事件,代碼如下
public class MainActivity extends BaseActivity implements OnClickListener {
@Override
protected void initViews(Bundle saveInstanceState) {
setContentView(R.layout.activity_main);
Button btTest = $(R.id.bt_test);
btTest.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.bt_test:
Intent intent = new Intent(this, LoginActivity.class);
startActivity(intent);
break;
default:
break;
}
}
相信好多人都是這么些代碼的,不能說(shuō)不對(duì),但反對(duì)這么些,看那個(gè)onClick方法,里面要使用switch...case...語(yǔ)句對(duì)R.id.bt_test的值進(jìn)行判斷,R這個(gè)類(lèi)就會(huì)在程序中反復(fù)出現(xiàn),這回?cái)_亂面向?qū)ο蟮木幊田L(fēng)格,不如在initViews方法中一次性把所有控件都初始化了,不要在頻繁使用R.id了
Android中還有另以一種事件編程方式,代碼如下
Button btTest = $(R.id.bt_test);
btTest.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
gotoLoginActivity();
}
});
上面的代碼有以下兩個(gè)優(yōu)點(diǎn):
- 直接在btTest這個(gè)按鈕對(duì)象上增加點(diǎn)擊事件,是面向?qū)ο蟮膶?xiě)法;
- 將onclick方法的實(shí)現(xiàn),封裝成單獨(dú)的方法,代碼如下
private void gotoLoginActivity() {
Intent intent = new Intent(this, LoginActivity.class);
startActivity(intent);
}
這樣onclick()方法就不會(huì)那么臃腫了,代碼也會(huì)清晰很多。