android-button点击事件的4种方式

  • 格式:docx
  • 大小:21.88 KB
  • 文档页数:4

控件响应事件的写法xml文件代码如下:(前三总)<Buttonandroid:id="@+id/button1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Button1"/><Buttonandroid:id="@+id/button2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Button2"/>四种方法分述如下:1.匿名内部类:public class TestButtonActivity extends Activity {Button btn1, btn2;Toast tst;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.activity_test_button);btn1 = (Button) findViewById(R.id.button1);btn2 = (Button) findViewById(R.id.button2);btn1.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubToast tst = Toast.makeText(TestButtonActivity.this, "111111111", Toast.LENGTH_SHORT);tst.show();}});btn2.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubToast tst = Toast.makeText(TestButtonActivity.this, "222222222", Toast.LENGTH_SHORT);tst.show();}});}}2.自定义单击事件监听类:public class TestButtonActivity extends Activity {Button btn1, btn2;Toast tst;class MyClickListener implements OnClickListener {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubswitch(v.getId()) {case R.id.button1:tst = Toast.makeText(TestButtonActivity.this, "111111111", Toast.LENGTH_SHORT);tst.show();break;case R.id.button2:tst = Toast.makeText(TestButtonActivity.this, "222222222", Toast.LENGTH_SHORT);tst.show();break;default:break;}}}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.activity_test_button);btn1 = (Button) findViewById(R.id.button1);btn2 = (Button) findViewById(R.id.button2);btn1.setOnClickListener(new MyClickListener());btn2.setOnClickListener(new MyClickListener());}}3.Activity继承View.OnClickListener,由Activity实现OnClick(View view)方法,在OnClick(View view)方法中用switch-case对不同id代表的button进行相应的处理public class TestButtonActivity extends Activity implements OnClickListener {Button btn1, btn2;Toast tst;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.activity_test_button);btn1 = (Button) findViewById(R.id.button1);btn2 = (Button) findViewById(R.id.button2);btn1.setOnClickListener(this);btn2.setOnClickListener(this);}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubswitch(v.getId()) {case R.id.button1:tst = Toast.makeText(this, "111111111", Toast.LENGTH_SHORT);tst.show();break;case R.id.button2:tst = Toast.makeText(this, "222222222", Toast.LENGTH_SHORT);tst.show();break;default:break;}}}4.在XML文件中“显示指定按钮的onClick属性,这样点击按钮时会利用反射的方式调用对应Activity中的click()方法xml文件代码如下:(第4种)<Buttonandroid:id="@+id/button1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="onClick"android:text="Button1"/><Buttonandroid:id="@+id/button2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="onClick"android:text="Button2"/>这里在输完android:的时候按下 Alt+/ 会有 onClick 属性的提示,但输入到android:onClick=“ 的地方按下 Alt+/ 并没有提示 onClick 选项,让我突然觉得这里好像有点问题。

public class TestButtonActivity extends Activity {Button btn1, btn2;Toast tst;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.activity_test_button);}// 注意这里没有 @Override 标签public void onClick(View v) {// TODO Auto-generated method stubswitch(v.getId()) {case R.id.button1:tst = Toast.makeText(this, "111111111", Toast.LENGTH_SHORT);tst.show();break;case R.id.button2:tst = Toast.makeText(this, "222222222", Toast.LENGTH_SHORT);tst.show();break;default:break;}}}总结:就是按钮少的时候用匿名内部类会比较快,比如写demo测试的时候或者登陆界面之类的。

按钮多的情况我还是选择第三种方法,方便。

关于第四种方法,我感觉最方便,。