首页 > 代码库 > Android代码学习--点击事件的几种写法

Android代码学习--点击事件的几种写法

由来:常规的写法参见《写一个apk》,每次点击按钮,按钮先查找文本框等元素,然后再操作,其实查找操作是很费时的操作,因此将该定义放到Activity的onCreate中:Oncreate只会执行一次,这样Activity一旦执行,就先创建好控件们了。

第二种方法:通过匿名内部类的方法:就是button.setOnClickListener(new OnClickListener(){

//实现OnClickListener接口

@Override

public void onClick(View v){

String number = mEditText.getText().toString();

Log.i(tag,number); //这个是说,在运行时,log框里面有个tag标签,如果里面输出的是MainActivity,遇到电话号码时候,就输出了;

Log.i(tag,“匿名内部类”); //这句打印出来就是,调用到匿名内部类时候,打印输出“匿名内部类”这几个字。

//拨打电话号码

Intent intent = new Intent();

intent.setAction(Intent.ACTION_CALL);

intent.setData(Uri.parse("tel:"+number));

//android里面

startActivity(intent);

}

));

 

方法三:企业里常用的方法---让MainActivity作为实现者,实现按钮注册的点击事件。企业这么写,是因为界面上通常好几十个按钮,如果每个按钮都用匿名内部类方法写,很不方便;用这种方法,只需要多写几个switch分支即可。

1. button.setOnClickListener(this);

2. 添加mainActivity implements OnClickLIstener()实现接口

3. 增加实现接口的方法

public void onCclick(View v){

//参数v 代表的就是当前被点击的条目 对应的view对象

//下面进行判断,如果v获取的id,就是R.id.bt_dail,就算OK

switch(v.getId()){

case R.id.bt_dail:

  //响应按钮的点击事件,具体呢就是把上面的那段代码贴过来,即可

String number = mEditText.getText().toString();

Log.i(tag,number); //这个是说,在运行时,log框里面有个tag标签,如果里面输出的是MainActivity,遇到电话号码时候,就输出了;

Log.i(tag,“匿名内部类”); //这句打印出来就是,调用到匿名内部类时候,打印输出“匿名内部类”这几个字。

//拨打电话号码

Intent intent = new Intent();

intent.setAction(Intent.ACTION_CALL);

intent.setData(Uri.parse("tel:"+number));

//android里面

startActivity(intent);

}

}

方法四:在laytout的布局xml中,把按钮的点击事件,绑定到某个方法上:

1. <Button

android:onClick="dail" />

2. 在MainActivity里定义dail方法:

public void dail(View view){

//里面还是那段代码,放到这里来了

String number = mEditText.getText().toString();

Log.i(tag,number); //这个是说,在运行时,log框里面有个tag标签,如果里面输出的是MainActivity,遇到电话号码时候,就输出了;

Log.i(tag,“匿名内部类”); //这句打印出来就是,调用到匿名内部类时候,打印输出“匿名内部类”这几个字。

//拨打电话号码

Intent intent = new Intent();

intent.setAction(Intent.ACTION_CALL);

intent.setData(Uri.parse("tel:"+number));

//android里面

startActivity(intent);

}

 

我们知道,所有的控件都可以被click,就拿TextView来说,需要在布局文件中添加两句话才可以:

<TextView

android:Onclick = "textview_click"

android:clickable = "true"/>

然后在mainActivity中添加该方法:

public void textview_click(View view){

Log.i(tag,"文本框被点击了");

}