Android开发中Button的onClick实现


方式一:在activity的onCreate()方法中,嵌入如下代码:

Button button = (Button)findViewById(R.id.button1);

button.setOnClickListener( new OnClickListener() {
@Override
public void onClick(View arg0) {
TextView textview = (TextView)findViewById(R.id.textView1);
textview.setText("点击Button.");
}
});


这个方式中,程序首先根据Button的ID实例化Button,然后在Button上加入listener监听对象,并同时实现接口OnClickListener的onClick()方法。
这种方式的代码量不是很多,但是有一个弊病:违背了java语言中,面向对象思想中关于解耦合,模块化的思想。 代码将接口的实现全部堆叠在一对小小的括号内,代码较为臃肿,并且很让人费解。

 


方式二:让acticity持有TextView,并且新建类Button_Listener实现接口OnClickListener,activity中的代码为:
public class TestOnClickActivity extends Activity {
private TextView textview;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button = (Button)findViewById(R.id.button1);
this.textview = (TextView)findViewById(R.id.textView1);
button.setOnClickListener(new Button_Listener(this));
}

public TextView getTextview() {
return this.textview;
}
}

类Button_Listener的代码为:
class Button_Listener implements OnClickListener {
private TestOnClickActivity activity;

public Button_Listener(TestOnClickActivity activity) {
this.activity = activity;
}

@Override
public void onClick(View v) {
TextView textview = activity.getTextview();
textview.setText("你点击了Button");
}
}

在方式二中,为了改正方式一的接口实现的不规范,特别重新建立了一个类:Button_Listener。
这种方式代码结构清晰,在为Button加入监听方法是,只需要new Button_Listener(this)即可。但同时,我们也能够发现,因为不属于类TestOnClickActivity,所以类Button_Listener必须通过持有TestOnClickActivity, 将其作为成员。并且,我们需要在TestOnClickActivity 中显示的加入TextView,并书写getTextview()方法,才能够实现我们的程序意图。
虽然代码的模块化,解耦化得到了一定程度上的实现,但换来的结果是代码更多,书写更加繁琐。

 

方式三:在组件文件main.xml中,对Button加入:
android:onClick="onClick_Event"

在activity中加入以下代码:
public void onClick_Event(View view) {
TextView textview = (TextView)findViewById(R.id.textView1);
textview.setText("你点击了Button");
}

在方式三种,我们只需要在TestOnClickActivity 中增加一个成员函数onClick_Event(),并在组件文件中加入对其的使用描述即可。
代码结构简单,清晰,代码量也大大减少,并且通过xml文件的可配置性,增长了工程的可维护性,模块化进一步增强! 这也是我最为推崇的一种方式。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM