Android 按钮常用点击事件大总结

很多学习Android程序设计的人都会发现每个人对代码的写法都有不同的偏好,比较明显的就是对控件响应事件的写法的不同。因此本文就把这些写法总结一下,比较下各种写法的优劣,希望对大家灵活地选择编码方式可以有一定的参考借鉴价值。

xml文件代码如下:

<Button

    android:id="@+id/button1"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:text="Button1" />

 

  <Button

    android: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; 

  @Override

  protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_test_button); 

    btn1 = (Button) findViewById(R.id.button1);

    btn2 = (Button) findViewById(R.id.button2);

 

    btn1.setOnClickListener(new OnClickListener() {

//或 btn1.setOnClickListener(new  View.OnClickListener() {

      @Override

      public void onClick(View v) {

        // TODO Auto-generated method stub

        Toast tst = Toast.makeText(TestButtonActivity.this, "111111111", Toast.LENGTH_SHORT);

        tst.show(); 

      }

    });

 

    btn2.setOnClickListener(new OnClickListener() {

//或 btn2.setOnClickListener(new  View.OnClickListener() {

      @Override

      public void onClick(View v) {

        // TODO Auto-generated method stub

        Toast 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 {

    @Override

    public void onClick(View v) {

      // TODO Auto-generated method stub

      switch (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;

      }

    }

  }

  @Override

  protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_test_button);

 

    btn1 = (Button) findViewById(R.id.button1);

    btn2 = (Button) findViewById(R.id.button2);

 

    btn1.setOnClickListener(new MyClickListener());

    btn2.setOnClickListener(new MyClickListener());

  }

}

//或先定义一个OnclickListener的对象,同时实现它的onClick(View)方法···

//OnClickListener listener = new OnClickListener(){

// @Override

//    public void onClick(View v) {

// /*在这里编写按钮被点击后执行的代码*/

//};

//bt.setOnClickListener (listener);

3.这一种是我今天看到的一种写法,在XML文件中“显示指定按钮的onClick属性,这样点击按钮时会利用反射的方式调用对应Activity中的click()方法”

<Button

    android:id="@+id/button1"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:onClick="onClick"

    android:text="Button1" />

 

  <Button

    android: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;

 

  @Override

  protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_test_button);

  }

 

  // 注意 这里没有 @Override 标签

  public void onClick(View v) {

    // TODO Auto-generated method stub

    switch (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;

    }

  }

}

这种写法整个代码中都不用声明button就可以实现button的单击事件。

4.跟上一种方法差不多,但比较明确一点

一般监听OnClickListener事件,我们都是通过Button button = (Button)findViewById(....);

button.setOClickLisener....这样的方式来实现。

这段时间看各大开放平台的demo,发现其实可以在xml中定义好方法名称,在Activity中实现该方法就可以了。

<Button

android:layout_width="70dp"

android:layout_height="wrap_content"

android:layout_centerVertical="true"

android:background="@drawable/title_btn_back"

android:onClick="aa"

android:text="返回"

android:textColor="#fff"

android:textSize="14sp" />

public void aa(View v) {

/*在这里编写按钮被点击后执行的代码*/

}

在Activity中直接实现该方法即可,也无需定义button,实例化它,跟原先一比方便了很多。

时间: 2024-08-07 06:15:15

Android 按钮常用点击事件大总结的相关文章

Android中按钮的点击事件的四种写法

如题,在Android中按钮的点击事件有四种写法,如下图. 界面为四个Button+一个TextView+一个ImageView activity_main布局文件如下: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="

Android代码学习--点击事件的几种写法

由来:常规的写法参见<写一个apk>,每次点击按钮,按钮先查找文本框等元素,然后再操作,其实查找操作是很费时的操作,因此将该定义放到Activity的onCreate中:Oncreate只会执行一次,这样Activity一旦执行,就先创建好控件们了. 第二种方法:通过匿名内部类的方法:就是button.setOnClickListener(new OnClickListener(){ //实现OnClickListener接口 @Override public void onClick(Vie

在Activity中响应ListView内部按钮的点击事件

最近交流群里面有人问到一个问题:如何在Activity中响应ListView内部按钮的点击事件,不要在Adapter中响应? 对于这个问题,我最初给他的解答是,在Adapter中定义一个回调接口,在Activity中实现该接口,从而实现对点击事件的响应. 下班后思考了一下,觉得有两种方式都能比较好的实现:使用接口回调和使用抽象类回调. 正好可以复习一下接口和抽象类的区别,于是写了两个Demo: 1.使用接口回调: Adapter类 1 package com.ivan.adapter; 2 3

三种方式实现按钮的点击事件

在android中,实现按钮的点击事件,其中心是实现接口OnClickListener,并且绑定OnClickListener的实例. 在上述基础上,又细分为3种方式实现点击事件,分别是:1.匿名内部类实现接口OnClickListener:2.外部类实现接口OnClickListener:3.Activity类实现接口OnClickListener. 对应代码如下: MainActivity.java package com.example.administrator.test_hello_w

在Activity中响应ListView内部按钮的点击事件的两种方法

转载:http://www.cnblogs.com/ivan-xu/p/4124967.html 最近交流群里面有人问到一个问题:如何在Activity中响应ListView内部按钮的点击事件,不要在Adapter中响应? 对于这个问题,我最初给他的解答是,在Adapter中定义一个回调接口,在Activity中实现该接口,从而实现对点击事件的响应. 下班后思考了一下,觉得有两种方式都能比较好的实现:使用接口回调和使用抽象类回调. 正好可以复习一下接口和抽象类的区别,于是写了两个Demo: 1.

android学习笔记003-点击事件的四种写法

一个按钮对点击事件相应的四种方法. 1.通过新建一个借口类来具体实现点击时间的响应: package com.example.dailcall; import android.support.v7.app.ActionBarActivity; import android.text.TextUtils; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.v

家庭版记账本app进度之对于按钮的点击事件以及线性布局以及(alertdialog)等相关内容的应用测试

通过线性布局,制作出连个按钮还有文本输入框以及嘴上放的标题文本进行信息的相关显示,完后最后的信息的输入,之后在屏幕的的下方进行显示 当点击第一个按钮的时候,在下方就会简单的出现你自己刚刚输入的相关信息.主要是训练的是对于客户输入信息的一个简单的获取, 并进行比较见得的在屏幕上输出.具体的结果截屏如下: 最后对alertdialog进行相关的应用 AlertDialog可以在当前页面弹出一个对话框,在所有界面元素之上,可以屏蔽掉界面其他控件的交互能力,因此AlertDialog一般用于提示一些非常

@objc || private || 按钮的点击事件

一.按钮的点击事件 // 3.监听发布按钮的点击 // Selector两种写法: 1>Selector("composeBtnClick") 2> "composeBtnClick" composeBtn.addTarget(self, action: "composeBtnClick", forControlEvents: .TouchUpInside) composeBtn.addTarget(self, action: Sel

android中listview点击事件失效的灵异事件

首先说明一下我想实现的功能: 点击某个item之后,让其颜色发生变化.如果变化网上有很多例子,我就不班门弄斧了.Listview之所以点击没有反应是因为上图中绿色部分(自己定义的一个继承BaseAdapter的adapter来适应listview)将listview的item覆盖了.现在点击的只是自定义的adapter中的convertView. 其次,自定义的adapter中包含一个ImageView和二个TextView.代码如下: <?xml version="1.0" e