码迷,mamicode.com
首页 > 移动开发 > 详细

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

时间:2017-10-01 17:36:28      阅读:282      评论:0      收藏:0      [点我收藏+]

标签:err   大写   1.0   span   一个   support   事件监听   enc   cti   

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种写法

标签:err   大写   1.0   span   一个   support   事件监听   enc   cti   

原文地址:http://www.cnblogs.com/AnhuaBi/p/7617435.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!