Android学习笔记-----------按钮的点击事件
Android学习笔记-----------按钮的点击事件
一.通过设置Button的onclik属性
自定义Button的onclik属性,属性值就是按钮点击事件的方法名
Button不需要指定Id,系统就可以执行此方法
例如:
1 <Button 2 android:layout_width="wrap_content" 3 android:layout_height="wrap_content" 4 android:text="第一个按钮" 5 android:onClick="onclick" 6 />
public void onclick(View v){ Toast.makeText(MainActivity.this,"这是第一个按钮",0).show(); }
二.设置按钮点击监听
这种方法需要指定Button的Id,通过Id.setOnClickListener(OnClickListener)来执行点击按钮后需要执行的程序
这种实现方式有三种写法
接下来的集中实现方式都用以下布局文件
1 <Button 2 android:id="@+id/bt_print" 3 android:layout_width="wrap_content" 4 android:layout_height="wrap_content" 5 android:text="第一个按钮" 6 />
1.实现点击接口的方式
这种方式需要MainActivity继承OnClickListener接口,实现其中的onClick方法.
这种方式在处理多按钮的情况下比较好用,可以让代码的调理看起来更清晰.
//实现OnClickListener接口 public class MainActivity extends ActionBarActivity implements OnClickListener{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button bt_print = (Button)findViewById(R.id.bt_print); //由于MainActivity已经实现OnClickListener接口,所以参数为this bt_print.setOnClickListener(this); } @Override //重写onClick方法 public void onClick(View v) { Toast.makeText(MainActivity.this,"这是第一个按钮", 0).show(); } }
2.内部类
这种方式需要定义一个实现了OnClickListener接口的内部类
特点与第一种方式相同.
1 public class MainActivity extends ActionBarActivity{ 2 3 @Override 4 protected void onCreate(Bundle savedInstanceState) { 5 super.onCreate(savedInstanceState); 6 setContentView(R.layout.activity_main); 7 Button bt_print = (Button)findViewById(R.id.bt_print); 8 //实例化内部类 9 MyOnClickListner myOnClickListner = new MyOnClickListner(); 10 //参数为实现了OnClickListener接口的内部类对象 11 bt_print.setOnClickListener(myOnClickListner); 12 } 13 //定义一个内部类,实现OnClickListener接口 14 class MyOnClickListner implements OnClickListener{ 15 16 @Override 17 //重写onClick方法 18 public void onClick(View v) { 19 Toast.makeText(MainActivity.this, "这是第一个按钮", 0).show(); 20 21 } 22 23 } 24 }
3.匿名内部类
通过匿名内部类来实例化一个OnClickListener的实现子类.
这种方式会让代码看起来不怎么整洁,但是当布局中只有一个按钮可以用这种方式来节约时间.
public class MainActivity extends ActionBarActivity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button bt_print = (Button)findViewById(R.id.bt_print); //定义一个匿名内部类,他是OnClickListener的实现子类 bt_print.setOnClickListener(new OnClickListener() { @Override //重写onClick方法 public void onClick(View v) { // TODO Auto-generated method stub } }); } }