android:id="@+id/btn_2"
android:onClick="
onclick_btn2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="50dp"
android:layout_marginTop="50dp"
android:text="@string/btn_2" />
/>
在/button_test/src/com/example/button_test/MainActivity.java中
@SuppressLint("ShowToast") public class MainActivity extends ActionBarActivity {
Button btn_1,btn_2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn_2 = (Button) findViewById(R.id.btn_2);
}
public void onclick_btn2(View v){
Toast.makeText(MainActivity.this, "我是第二个来的", 0).show();
}
}
这个就能够实现button的点击事件参照上述方法名称 在代码中定义方法 public void onBtnClickDemo(View v){}
在方法体当中实现相应的业务逻辑
Toast.makeText(MainActivity.this,
R.string.btn_one,
Toast.LENGTH_SHORT).show();
b,利用事件监听机制 事件源 事件监听器 事件
1) 要在布局中的元素中 定义id android:id=”@+id/xxx”
2)事件源 :在代码中 定义和布局中元素类型相同的对象 Button btn;
并将该对象 和 布局中的元素进行绑定 findViewById(R.id.xxx);
3)事件监听器 要定义一个内部类去实现 事件监听器 yyy implements OnClickListener
并覆写抽象方法 和 相应的业务逻辑
将事件源 和 事件监听器进行绑定 btn.setOnXxxxxx(new yyy())
在文件:/button_test/res/layout/activity_main.xml
android:id="@+id/btn_1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="100dp"
android:layout_marginTop="100dp"
android:text="@string/btn_1" />
在文件/button_test/src/com/example/button_test/MainActivity.java
public class MainActivity extends ActionBarActivity {
Button btn_1,btn_2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn_1 = (Button) findViewById(R.id.btn_1);
btn_1.setOnClickListener(new btn_1());
//btn_2 = (Button) findViewById(R.id.btn_2);
}
// public void onclick_btn2(View v){
//
// Toast.makeText(MainActivity.this, "我是第二个来的", 0).show();
// }
public class btn_1 implements OnClickListener {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "我是第一个来的", 0).show();
}
}
c、利用匿名内部类的方式实现 ===》就是对第二种方式的简写
1) 要在布局中的元素中 定义id android:id=”@+id/xxx”
2) 在代码中 定义和布局中元素类型相同的对象 Button btn;
并将该对象 和 布局中的元素进行绑定 findViewById(R.id.xxx)
3) 给btn对象绑定事件监听器
btn.setOnClickListenter( new OnClickListenter() {
public void onClick(View v){
实现业务逻辑
}
}
)
在文件/test/res/layout/main.xml
android:id="@+id/start"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/btn_one" />
在文件/test/src/com/baidu/activity/MyActivity.java
public class MyActivity extends Activity {
//private static final OnClickListener OnClickListener = null;
Button btn_start;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// btn_start = (Button) findViewById(R.id.start);
// btn_start.setOnClickListener(new btn_start());
btn_stop = (Button) findViewById(R.id.stop);
btn_stop.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//Toast.makeText(MyActivity.this, "我是第二个来的", 0).show();
Toast.makeText(MyActivity.this,getResources().getString(R.string.btn_two), 0).show();
}});
}
}
d、利用的是让Activity的子类去直接实现 事件监听器 并覆写方法
1) 要在布局中的元素中 定义id android:id=”@+id/xxx”
2) 在代码中 定义和布局中元素类型相同的对象 Button btn;
并将该对象 和 布局中的元素进行绑定 findViewById(R.id.xxx)
3) 给定义的btn对象绑定事件监听器 btn.setOnClickListenter(this);
4) 在覆写的onClick中实现业务逻辑 v.getId() R.id.xxx