安卓 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();
            }
        });
    }
}
相关推荐
程序员卷卷狗33 分钟前
MySQL 慢查询优化:从定位、分析到索引调优的完整流程
android·mysql·adb
写点啥呢1 小时前
Android Studio 多语言助手插件:让多语言管理变得简单高效
android·ai·ai编程·多语言
泥嚎泥嚎3 小时前
【Android】给App添加启动画面——SplashScreen
android·java
全栈派森3 小时前
初见 Dart:这门新语言如何让你的 App「动」起来?
android·flutter·ios
q***98523 小时前
图文详述:MySQL的下载、安装、配置、使用
android·mysql·adb
恋猫de小郭3 小时前
Dart 3.10 发布,快来看有什么更新吧
android·前端·flutter
恋猫de小郭5 小时前
Flutter 3.38 发布,快来看看有什么更新吧
android·前端·flutter
百锦再10 小时前
第11章 泛型、trait与生命周期
android·网络·人工智能·python·golang·rust·go
会跑的兔子11 小时前
Android 16 Kotlin协程 第二部分
android·windows·kotlin
键来大师11 小时前
Android15 RK3588 修改默认不锁屏不休眠
android·java·framework·rk3588