icode icode
首页
  • Android学习

    • 📁基础内容
    • 📺AndroidCore
    • 🎨Android-UI
    • 🏖️Components
    • 📊Fragment
    • 🔗网络操作
    • 🔏异步机制
    • 📦数据存储
    • 🗃️Gradle
  • 学习笔记

    • 『框架』笔记
    • 『Kotlin』笔记
    • 《Vue》笔记
    • 《Git》学习笔记
    • 『Bug踩坑记录』
  • ListView
  • RecyclerView
  • ViewPager
  • Java笔记

    • 🟠JavaSE
    • 🟢JavaWeb
    • 🔴JavaEE
    • ⚪JavaTopic
    • 🍳设计模式
  • 计算机基础

    • 📌计算机网络
    • 🔍数据结构
    • 📦数据库
    • 💻OS
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
  • 关于

    • 📫关于我
  • 收藏

    • 网站
    • 资源
    • Vue资源
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

iqqcode

保持对技术的探索实践与热爱
首页
  • Android学习

    • 📁基础内容
    • 📺AndroidCore
    • 🎨Android-UI
    • 🏖️Components
    • 📊Fragment
    • 🔗网络操作
    • 🔏异步机制
    • 📦数据存储
    • 🗃️Gradle
  • 学习笔记

    • 『框架』笔记
    • 『Kotlin』笔记
    • 《Vue》笔记
    • 《Git》学习笔记
    • 『Bug踩坑记录』
  • ListView
  • RecyclerView
  • ViewPager
  • Java笔记

    • 🟠JavaSE
    • 🟢JavaWeb
    • 🔴JavaEE
    • ⚪JavaTopic
    • 🍳设计模式
  • 计算机基础

    • 📌计算机网络
    • 🔍数据结构
    • 📦数据库
    • 💻OS
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
  • 关于

    • 📫关于我
  • 收藏

    • 网站
    • 资源
    • Vue资源
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 基础内容

  • AndroidCore

    • Activity

      • Activity概况
      • Activity基础
      • Button点击事件的几种实现方式
        • Activity之间的跳转
        • 一个APP拉起另一个APP
        • Activity其他属性
        • Activity启动模式
        • Activity生命周期
        • Activity 是被压入后台,还是跳转到新的 Activity
        • Activity其他操作
      • BroadcastReceiver

      • ContentProvider

      • Android-Service

      • Intent

    • Android UI

    • Components

    • Fragment

    • 网络操作

    • 异步机制

    • 数据存储

    • 学习笔记

    • 自定义View

    • View事件体系

    • Android
    • AndroidCore
    • Activity
    iqqcode
    2021-04-27
    目录

    Button点击事件的几种实现方式

    Demo链接:🚀05_ClickEvents (opens new window)

    # 方式一:XML属性的onClick

    在java类中定义好点击事件要执行的方法,在布局文件xml中调用 activity_main.xml

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/activity_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="com.vip.veblonwang.myapplication.MainActivity">
    
        <Button
            android:id="@+id/btnDoSomething"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="share"
            android:onClick="doSomething"/><!-- 这句是关键,点击时执行MainActivity中的doSomething方法 -->
    </LinearLayout>
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14

    MainActivity .java

    public class MainActivity extends Activity{
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    
        //方法必须定义为public
        public void doSomething(View view) { 
            // TODO
        }
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13

    # 方式二:匿名内部类

    在每次使用时新实现一个OnClickListener接口

    public class MainActivity extends Activity {
        private Button btn;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            btn = (Button) findViewById(R.id.btn_todo);
            btn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    // TODO
                }
            });
        }
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16

    # 方式三:该页面类实现OnClickListener接口

    public class MainActivity extends Activity implements View.OnClickListener{
        private Button btn;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            btn = (Button) findViewById(R.id.btn_todo);
            btn.setOnClickListener(this);
        }
    
        @Override
        public void onClick(View v) {
            switch (v.getId()) {
                case R.id.btn_todo:
                    // TODO
                    break;
                default:
                    break;
            }
        }
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22

    # 方式四:成员内部类

    public class MainActivity extends Activity {
       private Button btn_todo;
       
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            mbtn_fifth = findViewById(R.id.btn_todo);
    
            //findViewById(R.id.btn_third).setOnClickListener(new InnerOnClickListener());
    
            InnerOnClickListener onClickListener = new InnerOnClickListener();
            findViewById(R.id.btn_third).setOnClickListener(onClickListener);
        }
    
        // 内部类
        private class InnerOnClickListener implements View.OnClickListener {
    
            @Override
            public void onClick(View v) {
                // TODO
            }
        }
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25

    或者把类中的点击事件看作是一个对象,新建一个类来实现这些事件

    public class MainActivity extends Activity{
        private Button btn;
        private ClickListener clickListener =  new ClickListener();
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            btn = (Button) findViewById(R.id.btnDoSomething);
            btn.setOnClickListener(clickListener);
        }
    
        private class ClickListener implements View.OnClickListener{
    
            @Override
            public void onClick(View v) {
                // TODO
            }
        }
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21

    # 方式五:OnClickListener接口作为属性

    public class MainActivity extends Activity{
        private Button btn;
        private View.OnClickListener clickListener;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            btn = (Button) findViewById(R.id.btn_todo);
            btn.setOnClickListener(clickListener);
            clickListener = new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    // TODO
                }
            };
        }
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    编辑 (opens new window)
    #activity
    上次更新: 2022/03/27, 22:58:50
    Activity基础
    Activity之间的跳转

    ← Activity基础 Activity之间的跳转→

    最近更新
    01
    匿名内部类
    10-08
    02
    函数式接口
    10-08
    03
    ARouter-Kotlin踩坑
    10-05
    更多文章>
    Theme by Vdoing | Copyright © 2021-2023 iqqcode | MIT License | 备案号-京ICP备2021028793号
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式
    ×