zoukankan      html  css  js  c++  java
  • 【Android】按钮点击事件的常用写法

    学习总结:
    最近学习了Android点击事件的常用写法。点击事件会触发监听对象身上的回调,常用写法有以下四种:


    方法一:使用匿名内部类。

    public class MainActivity extends AppCompatActivity {
    
        private Button btn_test;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            btn_test = (Button) findViewById(R.id.btn_test);
            btn_test.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                // 在匿名内部类中this表示View.OnClickListener对象,
                // 所以要用MainActivity.this指名上下文
                    Toast.makeText(MainActivity.this, "点击了按钮!", Toast.LENGTH_LONG);
                }
            });
        }
    }

    方法二:自定义内部类实现OnClickListener接口,使用这个类的对象。

    public class MainActivity extends AppCompatActivity {
    
        private Button btn_test;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            btn_test = (Button) findViewById(R.id.btn_test);
            btn_test.setOnClickListener(new MyOnClickListener());
        }
    
        private class MyOnClickListener implements View.OnClickListener {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this, "点击了按钮!", Toast.LENGTH_LONG).show();
            }
        }
    }

    方法三:让当前MainActivity类实现OnClickListener接口。

    public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    
        private Button btn_test;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            btn_test = (Button) findViewById(R.id.btn_test);
            btn_test.setOnClickListener(this);
        }
    
        // 实现View.OnClickListener接口中的点击回调的方法
        @Override
        public void onClick(View v) {
            Toast.makeText(this, "点击了按钮!", Toast.LENGTH_LONG).show();
        }
    }

    方法四:在按钮控件的布局XML文件中指定点击事件。
    布局文件activity_main.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout 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"
        tools:context="com.demo.guxin.a02_clicklistener.MainActivity">
    
        <!-- android:onClick="ClickTest"指定该控件的点击事件 -->
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="测试"
            android:onClick="ClickTest"/>
    </RelativeLayout>

    MainActivity.java:

    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    
        // 在布局XML文件中指定的按钮点击事件
        // 必须是public void 参数为View
        public void ClickTest(View v){
            Toast.makeText(this, "点击了按钮!", Toast.LENGTH_LONG).show();
        }
    
    }

    小结:其实一共也就两种方法

    • 通过Java代码:想办法实现OnClickListener接口,实现点击回调OnClick()方法。
    • 通过XML配置:直接在控件布局中指定点击回调的方法名,哪个Activity使用了该布局,就由它实现该点击回调。
  • 相关阅读:
    信息系统开发内容
    系统开发项目环境
    操作系统学习基础
    进程管理、内存管理、存储管理初步了解
    操作系统导论
    Hadoop学习2
    Hadoop学习
    LiveScript 字面量
    初识LiveScript
    在使用Cocos2d-JS 开发过程中需要用到的单体设计模式
  • 原文地址:https://www.cnblogs.com/guxin/p/android-how-to-use-button-click-event.html
Copyright © 2011-2022 走看看