简易的按钮事件(Button的4中事件处理)
新建一个继承Activity类的ButtonClickActivity,并设置布局文件为:buttonclick.xml。
在布局文件中定义4个Button组件
<Button android:id="@+id/buttonclick_btn1" style="@android:style/Widget.Button.Inset" android:layout_width="fill_parent" android:layout_height="wrap_content" android:onClick="onClick" android:text="@string/buttonclick_btn1" />
<Button android:id="@+id/buttonclick_btn2" style="@android:style/Widget.Button.Inset" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/buttonclick_btn2" />
<Button
android:id="@+id/buttonclick_btn3" style="@android:style/Widget.Button.Inset" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/buttonclick_btn3" /> <Button android:id="@+id/buttonclick_btn4" style="@android:style/Widget.Button.Inset" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/buttonclick_btn4" />
|
第一个Button比其他3个Button多了一个属性:android:onClick="onClick"使用了此属性后就要在代码中定义一个onClick()方法,里面传入一个View对象。
public void onClick(View view) { switch (view.getId()) { case R.id.buttonclick_btn1: Button btn1 = (Button) view; Toast.makeText(ButtonClickActivity.this, btn1.getText(), Toast.LENGTH_SHORT).show(); break; } } |
之后只要点击了Button就会执行这个onClick方法。
在处理Button2的时候,先通过布局文件来实例化Button2,而后为Button2注册监听事件setOnClickListener()。里面传入一个OnClickListener对象即可。
findViewById(R.id.buttonclick_btn2).setOnClickListener(new OnClickListener() {
@Override public void onClick(View view) { Button btn1 = (Button) view; Toast.makeText(ButtonClickActivity.this, btn1.getText(), Toast.LENGTH_SHORT).show(); } });
|
而Button3,先让Acitivity类实现OnClickListener这个接口,后覆写onClick()方法。
package lyx.feng.simpletextdemo; ...... public class ButtonClickActivity extends Activity implements OnClickListener { ..... public void onClick(View view) { switch (view.getId()) { case R.id.buttonclick_btn3: Button btn3 = (Button) view; Toast.makeText(ButtonClickActivity.this, btn3.getText(), Toast.LENGTH_SHORT).show(); break; } } }
|
只是在写完上面代码的时候,记得注册Button的监听事件,否则Button3不会起作用。
而Button4的处理方式,是在Button2的基础上单独定义一个内部类来实现
package lyx.feng.simpletextdemo; ..... public class ButtonClickActivity extends Activity implements OnClickListener {
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setContentView(R.layout.buttonclick); findViewById(R.id.buttonclick_btn4).setOnClickListener(new MyButtonClickListener()); } private class MyButtonClickListener implements OnClickListener{
@Override public void onClick(View view) { Button btn4 = (Button) view; Toast.makeText(ButtonClickActivity.this, btn4.getText(), Toast.LENGTH_SHORT).show();
}
} }
|
也是和Button3一样要为Button4注册单机事件