基本内容:
1.内部类
2.匿名内部类
3.让当前类实现OnClickListener接口类型
4.可以是用attribute(属性)来代替OnClickListener
1.调用的方法:
2.布局文件代码activity_main.xml:
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.tellcall.MainActivity">
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/TextView1"/>
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:phoneNumber="true"
/>
3.strings.xml
一、内部类应用:
在类里面在写一个类来实现这个方法或接口
packagecom.example.tellcall_two;
importandroid.support.v7.app.ActionBarActivity;
importandroid.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
public class MainActivity extends ActionBarActivity {
private Buttonbt_cll;
private EditTextet_number;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_number= (EditText )findViewById(R.id.editText1);
bt_cll= (Button)findViewById(R.id.button1);
bt_cll.setOnClickListener(new MyCilkListener());
}
public class MyCilkListener implements OnClickListener{
@Override
public void onClick(View v) {
OnclicMeth();//调用方法
}
private void OnclicMeth() {
String number =et_number.getText().toString().trim();
if(" ".equals(number)){
Toast.makeText(MainActivity.this,"输入的电话号码为空",
Toast.LENGTH_LONG).show();
return;
}
Intent intent = newIntent();
intent.setAction(intent.ACTION_CALL);
intent.setData(Uri.parse("tel:"+number));
startActivity(intent);
}
}
二、匿名内部类:
不声明类名字,直接重写为实现的方法与类
packagecom.example.tellcall_two;
importandroid.support.v7.app.ActionBarActivity;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;
importandroid.widget.EditText;
importandroid.widget.Toast;
importandroid.content.Intent;
importandroid.net.Uri;
importandroid.os.Bundle;
public class MainActivity extends ActionBarActivity {
privateButtonbt_cll;
privateButtonbt_cll2;
privateButtonbt_cll3;
privateEditTextet_number;
@Override
protectedvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_number= (EditText )findViewById(R.id.editText1);
bt_cll= (Button)findViewById(R.id.button1);
bt_cll.setOnClickListener(newOnClickListener() {
@Override
public void onClick(View arg0) {
OnclicMeth();
}
});
}
private void OnclicMeth() {
String number = et_number.getText().toString().trim();
if(" ".equals(number)){
Toast.makeText(MainActivity.this,"输入的电话号码为空",
Toast.LENGTH_LONG).show();
return;
}
Intent intent= new Intent();
intent.setAction(intent.ACTION_CALL);
intent.setData(Uri.parse("tel:"+number));
startActivity(intent);
}
}
使用最方便
packagecom.example.tellcall_two;
importandroid.support.v7.app.ActionBarActivity;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;
importandroid.widget.EditText;
importandroid.widget.Toast;
importandroid.content.Intent;
importandroid.net.Uri;
importandroid.os.Bundle;
public class MainActivity extends ActionBarActivity implements OnClickListener{
privateButtonbt_cll;
privateButtonbt_cll2;
privateButtonbt_cll3;
privateEditTextet_number;
@Override
protectedvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_number= (EditText )findViewById(R.id.editText1);
bt_cll= (Button)findViewById(R.id.button1);
bt_cll2= (Button)findViewById(R.id.button2);
bt_cll3= (Button)findViewById(R.id.button3);
*按钮点击事件类型三
*让当前类实现OnClickListener接口类型
*使用特点:在实现多个按钮事件的时候使用最方便
*方法A:
*可以使用此类方法来实现button的点击事件
*bt_cll.setOnClickListener(this);//指定使用父类的方法
*bt_cll2.setOnClickListener(this);
*bt_cll3.setOnClickListener(this);
*/
}
privatevoidOnclicMeth() {
String number =et_number.getText().toString().trim();
if(" ".equals(number)){
Toast.makeText(MainActivity.this,"输入的电话号码为空",
Toast.LENGTH_LONG).show();
return;
}
Intent intent =newIntent();
intent.setAction(intent.ACTION_CALL);
intent.setData(Uri.parse("tel:"+number));
startActivity(intent);
}
@Override
publicvoidonClick(View V) {
/*
*方法B:
*可以使用此类方法来实现button的点击事件
*具体判断点击的是哪个按钮,然后执行
*/
switch(V.getId()) {
caseR.id.button1:
OnclicMeth();
break;
caseR.id.button2:
OnclicMeth();
break;
caseR.id.button3:
OnclicMeth();
break;
default:
break;
}
}
}
四、用attribute(属性)来代替OnClickListener
在Button按钮中中设置一个 android:onClick="onclickfour",属性名称:onclickfour
注意事项:
A, 属性名与方法名必须相同
B, 方法中必须传递一个View参数
什么时候使用最好:适合自己做一些Demo的时使用
packagecom.example.tellcall_two;
importandroid.support.v7.app.ActionBarActivity;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;
importandroid.widget.EditText;
importandroid.widget.Toast;
importandroid.content.Intent;
importandroid.net.Uri;
importandroid.os.Bundle;
public class MainActivity extends ActionBarActivity{
private Buttonbt_cll;
private Buttonbt_cll2;
private Buttonbt_cll3;
private EditTextet_number;
@Override
protected voidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_number= (EditText )findViewById(R.id.editText1);
bt_cll= (Button)findViewById(R.id.button1);
bt_cll2= (Button)findViewById(R.id.button2);
bt_cll3= (Button)findViewById(R.id.button3);
}
public voidonclickfour(View v2){
OnclicMeth();
}
private voidOnclicMeth() {
String number =et_number.getText().toString().trim();
if(" ".equals(number)){
Toast.makeText(MainActivity.this,"输入的电话号码为空",
Toast.LENGTH_LONG).show();
return;
}
Intent intent = newIntent();
intent.setAction(intent.ACTION_CALL);
intent.setData(Uri.parse("tel:"+number));
startActivity(intent);
}
}
源代码:链接:http://pan.baidu.com/s/1mikm4xa 密码:437l