Android 按钮的响应点击事件的4种写法

Android按钮的响应点击事件

学习了按钮的响应点击事件,写一下总结,写的不好的希望大家能给出意见或建议。

这是layout xml文件   点击事件只需要获得Button的id或者onClick

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="match_parent">

    <Button
        android:id="@+id/button1"           //只需要看这行  1,2,3种方法看这个
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"                //id我设置是button(b是小写的)
        android:layout_alignParentTop="true"                //onclick我设置的是Button(B是大写的)
        android:layout_centerHorizontal="true"
        android:layout_marginTop="135dp"
        android:onClick="Button1"           //只需要看这行 第四种方法看这个
        android:text="Button1"/>                    

    <Button
        android:id="@+id/button2"         // 只需要看这行  1,2,3,种方法看这个
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/button1"
        android:layout_alignStart="@+id/button1"
        android:layout_below="@+id/button1"
        android:layout_marginTop="116dp"
        android:onClick="Button2"         //只需要看这行  第四种方法看这个
        android:text="Button2"/>
</RelativeLayout>

第一种写法:匿名内部             //觉得第四种最简单

需要获得Button的 android:id="@+id/button1"      (b是小写的)

package com.example.administrator.click1;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button bt1_click = (Button) findViewById(R.id.button1);  //android :id="@+id/button1" 用的时候只需要把button1改成Button的id        bt1_click.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this,"按键一被点击了", Toast.LENGTH_SHORT).show();
            }
        });
//与上一段用法一样
        Button bt2_click = (Button) findViewById(R.id.button2);
        bt2_click.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this,"按键二被点击了", Toast.LENGTH_SHORT).show();
            }
        });
    }
}

第二种写法:自定义事件监听类

个人觉得和第一种一样,只是把匿名内部的的方法用个类存放起来

package com.example.administrator.click1;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button bt1_click = (Button) findViewById(R.id.button1);
        Button bt2_click = (Button) findViewById(R.id.button2);
        bt1_click.setOnClickListener(new MyClickListener());  //与匿名差不多  只是把class new出去了
        bt2_click.setOnClickListener(new MyClickListener());
    }

    class MyClickListener implements View.OnClickListener {

        @Override
        public void onClick(View v) {     //通过switch 判断是哪一个按键按下的
            switch (v.getId()) {          //个人觉得自定义单击事件监听,有很多Button的时候用
                case R.id.button1:
                    Toast.makeText(MainActivity.this, "按键一被点击了", Toast.LENGTH_SHORT).show();
                    break;
                case R.id.button2:
                    Toast.makeText(MainActivity.this, "按键二被点击了", Toast.LENGTH_SHORT).show();
                    break;                default:                    break;
} } } }

第三种写法:

用this替换

package com.example.administrator.click1;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button bt1_click = (Button) findViewById(R.id.button1);
        Button bt2_click = (Button) findViewById(R.id.button2);
        bt1_click.setOnClickListener(this);    //与第二种差不多
        bt2_click.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.button1:
                Toast.makeText(this, "按键一被点击了", Toast.LENGTH_SHORT).show();
                break;
            case R.id.button2:
                Toast.makeText(this, "按键二被点击了", Toast.LENGTH_SHORT).show();
                break;
            default:
                break;
        }
    }
}

感觉这三种方法属于一种方法

findViewById 找到button的id
然后用.setOnClickListener调用方法   第四种方法就与众不同第四种写法:
package com.example.administrator.click1;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    //只需要把函数名字改成你设置的onclick的名字就可以了
    //只需要把函数名字改成你设置的onclick的名字就可以了
    //只需要把函数名字改成你设置的onclick的名字就可以了
                //Button1(大写的B)是onclick的
    public void Button1(View v) {
        Toast.makeText(this, "按键一被点击", Toast.LENGTH_SHORT).show();
    }

               //Button2(大写的B)是onclick的
    public void Button2(View v) {
        Toast.makeText(this, "按键二被点击", Toast.LENGTH_SHORT).show();
    }
}

第四种觉得最简单。

写的不好的希望大家能给出意见或建议。

时间: 2024-10-14 11:01:43

Android 按钮的响应点击事件的4种写法的相关文章

【转】Android - Button(按钮)的响应点击事件的4种写法

原文网址:http://www.yrom.net/blog/2011/12/12/android-4-onclicklistener-of-button/ Button控件setOnclickListener(View.OnClickListener listener)来接收一个点击事件的监听器 自定义一个点击事件监听器类让其实现View.OnClickListener的onClick(View v)方法 1 2 3 4 5 class MyOnClickListener implements

无废话Android之常见adb指令、电话拨号器、点击事件的4种写法、短信发送器、Android 中各种布局(1)

1.Android是什么 手机设备的软件栈,包括一个完整的操作系统.中间件.关键的应用程序,底层是linux内核,安全管理.内存管理.进程管理.电源管理.硬件驱动 2.Dalvik VM 和 JVM 的比较 3.常见adb指令 platform-tools/adb.exe adb.exe : android debug bridge android调试桥 adb devices:列出所以连接的设备 adb kill-server :杀死adb调试桥 adb start-server :启动adb

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

Android点击事件的四种写法

Android点击事件的四种写法 一.Android点击事件的四种写法 1.点击事件的第一种写法 .  写一个内部类.实现点击事件的接口 bt.setOnClickListener(new MyButtonListener()); 2.点击事件的第二种写法,匿名内部类 bt.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { callPhone(); } }); 3.点击事件的第三种

Android笔记---点击事件的四种写法

Android 点击事件的四种写法: 1. 以内部类的形式实现 OnClickListener 接口.定义点击事件 class MainActivity extents Activity{ // ... private class MyListener implements OnClickListener{ public void Onclick(View v){ // ... 点击事件的响应 } } } 2. 採用匿名内部类 ? ?缺点:若是点击事件太多,则须要的匿名内部类太多 class M

Android中点击事件的四种写法详解

Android中点击事件的四种写法使用内部类实现点击事件使用匿名内部类实现点击事件让MainActivity实现View.OnClickListener接口通过布局文件中控件的属性 第一种方法:使用内部类基本步骤如下: 新建一个MyOnClickListener类并实现View.OnClickListener接口 重写View.OnClickListener接口中的OnClick(View view)方法 给Button绑定一个监听器,并监听一个点击事件示例代码如下: public class

android中点击事件的4种写法

android中获取到一些控件(比如说按钮)时,一般会为其添加点击事件,android中的点击事件一共有4中写法. 假设在布局文件中声明如下 ....... <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/bt_1" /> ....... 一.通过匿名内部类     主要的java代码如下

Android Day01-Android按钮点击事件的4种写法

按钮点击事件,说白了就一个方法,setOnClickListener(OnClickListener). 只要传递的参数只要是OnClickListener接口的子类即可,很容易想到的2种实现方式就是匿名内部类和定义一个类实现这个接口.另外还有2种实现方法,有必要着重讲一下: 1.让Activity自身实现OnClickListener接口,传递setOnClickListener参数用this. 然后在onClick(View v)方法中,判断事件源id. switch(v.getId())