Android有以下四种响应按钮事件的方式,编码的时候可以根据实际情况进行选择。
1. 从布局文件制定响应方法
1)首先在布局xml文件中的按钮项中添加 android:onClick="call"
如 <Button android:id="@+id/button"
android:layout_below="@id/number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="call"
android:text="@string/callNumber"/>
2)再在对应的.java文件中添加此方法
public void call(View v)
{
System.out.println("拨打电话.");
// 1. 取出输入框中的号码
EditText etNumber = (EditText) findViewById(R.id.number);
// 输入框对象
String number = etNumber.getText().toString();
// 将要拨打的号码
// 2. 根据号码拨打电话
Intent intent = new Intent();
// 创建一个意图
intent.setAction(Intent.ACTION_CALL);
// 指定其动作为拨打电话
intent.setData(Uri.parse("tel:" + number));
// 指定将要拨出的号码,注意"tel:"
startActivity(intent);
// 执行这个动作,注意加上呼叫的权限
}
2. 内部类闭包的方法
1)
Button btnCall = (Button) findViewById(R.id.btn_call);
btnCall.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
System.out.println("MainUI2 拨打电话.");
call();
}
});
2)
private void call()
{
}
3. 内部类的方法
1)
Button btnCall = (Button) findViewById(R.id.btn_call);
btnCall.setOnClickListener(new MyOnClickListener());
2)内部类MyOnClickListener实现OnClickListener接口
class MyOnClickListener implements OnClickListener
{
@Override
public void onClick(View v)
{
System.out.println("MainUI3 拨打号码..");
call();
}
}
3)
private void call()
{
}
4.当前activity直接实现OnClickListener接口
1)实现接口
public class MainActivity extends Activity implements OnClickListener
{
}
2)指定响应者为自己
Button btnCall = (Button) findViewById(R.id.btn_call);
btnCall.setOnClickListener(this);
3)重载OnClick函数
@Override
public void onClick(View v)
{
System.out.println("MainUI4 拨打号码..");
call();
}
以上4种方法,第一种最好不用,因为不利于表现层和服务层的解耦,尽量用第四种方法,因为其践行了“多用组合,少用继承”的设计思想,代码也比较简洁美观。