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使用了该布局,就由它实现该点击回调。
  • 相关阅读:
    Matlab 绘制三维立体图(以地质异常体为例)
    Azure DevOps的variable group实现array和hashtable参数的传递
    Azure DevOps 利用rest api设置variable group
    Azure AADSTS7000215 其中一种问题的解决
    Power BI 实现实时更新Streaming Dataset
    AAD Service Principal获取azure user list (Microsoft Graph API)
    Matlab 沿三维任意方向切割CT图的仿真计算
    Azure Powershell script检测登陆并部署ARM Template
    Azure KeyVault设置策略和自动化添加secrets键值对
    Azure登陆的两种常见方式(user 和 service principal登陆)
  • 原文地址:https://www.cnblogs.com/guxin/p/android-how-to-use-button-click-event.html
Copyright © 2011-2022 走看看