安卓按钮添加监听的三种方法

本文介绍了在安卓开发中实现按钮监听的三种方法:使用匿名内部类、通过当前类实现OnClickListener接口及在布局文件中添加android:onClick属性。每种方法都有详细的代码示例。

在安卓开发中,对按钮添加监听,是每一个app都需要用到的。通常我们会用三种办法来对按钮进行监听。下面我们哎说说着三种。我个人是比较喜欢匿名内部类的方法的。

第一种,匿名内部类

匿名内部类一般通过以下代码完成,顾名思义,通过传入匿名内部类来实现监听并写出对应的事件处理

btButton.setOnClickListener(new OnClickListener() {

@SuppressLint("ShowToast") @Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this,tipsString,Toast.LENGTH_SHORT ).show();

}

});

第二种,通过当前类实现OnClickListener接口并在其必须实现的onClick方法中添加事件

public class MainActivity extends Activity implements OnClickListener

========================================
btButton2.setOnClickListener(this);

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

Toast.makeText(MainActivity.this, tipsString2, Toast.LENGTH_SHORT).show();

}

第三种,在布局文件中添加 android:onClick属性来实现。这种和javascript的onclick写法是一样的,属性后面的值是方法名称。定义好后,需要在onCreate()方法中写出该方法,并且该方法必须用View 作为参数传入。比如你定义了 android:onClick="sing",那么你就必须在当前类中写上 sing(view v)方法。

<Button
android:id="@+id/bt3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="@string/method"
android:text="@string/bt3" />

下面我们看看我写的Demo,

先看运行截图吧

2ff419bd-642f-45c9-9a6f-4e6fed72f64c

然后是源代码

首先是布局文件activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.buttononclik.MainActivity" >

    <Button
        android:id="@+id/bt1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/bt1" />

    <Button
        android:id="@+id/bt2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/bt2" />

    <!--
         注意,下面两个按钮多了android:onClick属性。这个属性的作用就是当被点击
                        时候就调用设置的方法,"@string/method" 方法名可以随便起,这里我们引用
         "@string/method",值为onclickMethod。这个一点和javascript很像。也就
                       是说,其实这里我们是不通过findViewById()来取得按钮的。所以id是可以不用
                        设置的。那么下面我们设置id是因为我用了两个按钮,并着俩个按钮的
         android:onClick属性都设置为onclickMethod,所以如果要对相同方法名,我们
                      需要id作为判断,如果方法名设置为不一样,我们完全可以不用设置id。
                     这个方法需要在当前类中写上对于的方法来处理监听事件。 -->

    <Button
        android:id="@+id/bt3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="@string/method"
        android:text="@string/bt3" />

    <Button
        android:id="@+id/bt4"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="@string/method"
        android:text="@string/bt4" />

</LinearLayout>

然后是java文件 MainActivity.java

package com.example.buttononclik;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;


public class MainActivity extends Activity implements OnClickListener{
    
    //定义要用到的属性
    private Button btButton;
    private Button btButton2;
    private String tipsString;
    private String tipsString2;
    private String tipsString3;
    private String tipsString4;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //加载布局文件
        setContentView(R.layout.activity_main);
        
        btButton = (Button) findViewById(R.id.bt1);
        tipsString = this.getString(R.string.tips);
        tipsString2 = this.getString(R.string.tips2);
        tipsString3 = this.getString(R.string.tips3);
        tipsString4 = this.getString(R.string.tips4);
       
        
        
        btButton2 = (Button) findViewById(R.id.bt2);
        /*当前类实现了OnClickListener接口,
                          所以我们可以传入当前类对象this作为参数,并在下面方法写事件*/
        btButton2.setOnClickListener(this);
        
        //通过setOnClickListener方法并传入匿名内部类OnClickListener来实现监听
        btButton.setOnClickListener(new OnClickListener() {
            
            @SuppressLint("ShowToast") @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Toast.makeText(MainActivity.this,tipsString,Toast.LENGTH_SHORT ).show();
            }
        });
    }
    
    

    //这个是继承了OnClickListener方法所要实现的方法,监听事件可以在这个方法写
    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        Toast.makeText(MainActivity.this, tipsString2, Toast.LENGTH_SHORT).show();
    }
    
    public void onclickMethod(View v){
        int id = v.getId();
        switch (id) {
        case R.id.bt3:
            Toast.makeText(MainActivity.this,tipsString3 , Toast.LENGTH_SHORT).show();
            break;
        case R.id.bt4:
            Toast.makeText(MainActivity.this,tipsString4 , Toast.LENGTH_SHORT).show();
            break;

        default:
            break;
        }
    }
}

然后是字符串文件strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">buttonOnclik</string>
    <string name="hello_world">Hello world!</string>
    <string name="action_settings">Settings</string>
    <string name="bt1">内部类实现监听</string>
    <string name="tips">通过匿名内部类实现监听</string>
    <string name="bt2">通过实现OnCllickListener接口实现监听</string>
    <string name="tips2">通过实现OnClickListener接口添加监听</string>
    <string name="method">onclickMethod</string>
    <string name="bt3">通过设置Onclick属性监听</string>
    <string name="bt4">作用是为了用id区分bt3</string>
    <string name="tips3">如果不是有要区别两个相同Onclick属性的按钮,id可以不用设置</string>
    <string name="tips4">第四个按钮被点击了</string>

</resources>

 

转载于:https://www.cnblogs.com/linfenghp/p/5373754.html

标题基于SpringBoot的马术俱乐部管理系统设计与实现AI更换标题第1章引言介绍马术俱乐部管理系统的研究背景、意义、国内外研究现状、论文方法及创新点。1.1研究背景与意义阐述马术俱乐部管理系统对提升俱乐部管理效率的重要性。1.2国内外研究现状分析国内外马术俱乐部管理系统的发展现状及存在的问题。1.3研究方法以及创新点概述本文采用的研究方法,包括SpringBoot框架的应用,以及系统的创新点。第2章相关理论总结和评述与马术俱乐部管理系统相关的现有理论。2.1SpringBoot框架理论介绍SpringBoot框架的基本原理、特点及其在Web开发中的应用。2.2数据库设计理论阐述数据库设计的基本原则、方法以及在管理系统中的应用。2.3马术俱乐部管理理论概述马术俱乐部管理的基本理论,包括会员管理、课程安排等。第3章系统设计详细描述马术俱乐部管理系统的设计方案,包括架构设计、功能模块设计等。3.1系统架构设计给出系统的整体架构,包括前端、后端和数据库的交互方式。3.2功能模块设计详细介绍系统的各个功能模块,如会员管理、课程管理、预约管理等。3.3数据库设计阐述数据库的设计方案,包括表结构、字段设计以及数据关系。第4章系统实现介绍马术俱乐部管理系统的实现过程,包括开发环境、编码实现等。4.1开发环境搭建介绍系统开发所需的环境,包括操作系统、开发工具等。4.2编码实现详细介绍系统各个功能模块的编码实现过程。4.3系统测试与调试阐述系统的测试方法、测试用例以及调试过程。第5章系统应用与分析呈现马术俱乐部管理系统的应用效果,并进行性能分析。5.1系统应用情况介绍系统在马术俱乐部中的实际应用情况。5.2系统性能分析从响应时间、并发处理能力等方面对系统性能进行分析。5.3用户反馈与改进收集用户反馈,提出系统改进建议。第6章结论与展望总结马术俱乐部管理系统的设计与实现成果,并展望未来的研究
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值