安卓 android:onClick与setOnClickListener区别

先说区别:

两种方式底层一样,只是使用onClick需要注意:

  1. 事件处理函数必须是public的。

  2. 事件处理函数必须在Activity中定义。

  3. 事件处理函数必须有一个View类型的参数。

  4. 只能用在API Level 4及以后的版本。

1.onClick方法:在Xml中添加onClick属性

XML 复制代码
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <Button
        android:id="@+id/mybutton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="Press Me"
        android:onClick="buttonClick"/>
</RelativeLayout>

在代码中添加对应的函数buttonClick,注意要添加到当前Activity对应的java类中。

java 复制代码
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void buttonClick(View view) {
        Toast.makeText(this, "Button was clicked", Toast.LENGTH_SHORT).show();
    }
    
    // ....
}

2.setOnClickListener方法

java 复制代码
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button button = (Button)findViewById(R.id.mybutton);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this, "Button was clicked", Toast.LENGTH_SHORT).show();
            }
        });
    }
}
相关推荐
哈哈浩丶23 分钟前
ATF (ARM Trusted Firmware) -2:完整启动流程(冷启动)
android·linux·arm开发·驱动开发
哈哈浩丶27 分钟前
ATF (ARM Trusted Firmware) -3:完整启动流程(热启动)
android·linux·arm开发
哈哈浩丶35 分钟前
OP-TEE-OS:综述
android·linux·驱动开发
恋猫de小郭10 小时前
你是不是觉得 R8 很讨厌,但 Android 为什么选择 R8 ?也许你对 R8 还不够了解
android·前端·flutter
城东米粉儿12 小时前
Android Glide 笔记
android
城东米粉儿12 小时前
Android TheRouter 笔记
android
城东米粉儿18 小时前
Android AIDL 笔记
android
城东米粉儿19 小时前
Android 进程间传递大数据 笔记
android
城东米粉儿19 小时前
Android KMP 笔记
android
冬奇Lab20 小时前
WMS核心机制:窗口管理与层级控制深度解析
android·源码阅读