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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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();
    }
}

 第四种觉得最简单。

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







以上是关于Android 按钮的响应点击事件的4种写法的主要内容,如果未能解决你的问题,请参考以下文章

Android开发系列之按钮事件的4种写法

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

负一屏卡片快服务测试点击账号绑定无响应

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

Android移动应用开发之事件响应的一些写法

Android onClick 按钮单击事件 四种常用写法