安卓 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();
            }
        });
    }
}
相关推荐
又见情义15 分钟前
RK3568 Android 13开机时间优化-系统应用裁剪实践
android
hunterandroid1 小时前
Android 内存泄漏排查实战:从 LeakCanary 报警到根因定位
android·前端
我命由我123451 小时前
Android 设备的日志缓冲区被写满,logcat: Unexpected EOF!
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
171320330计算机毕设编程2 小时前
基于SpringBoot的在线拍卖系统
android·java·spring boot·小程序·课程设计
用户0934077735142 小时前
HarmonyOS WPS Open SDK 实践:OpenFileRequest 打开链路与沙箱拷贝
android·typescript·harmonyos
0xBADCODE2 小时前
动态DEX加载+反射+DES硬编码密钥:安卓三层逆向实战
android·java·python·安全·网络安全·逆向·ctf
Patrick在香港2 小时前
Python 拉取 C&SD 官方 API:香港 2022 年已跨过“超老龄线“,而抚养比正在爬回 1961
android·c语言·python·数据分析·时序数据库·数据可视化·香港
mmsx3 小时前
osmdroid 地图实战 03|谷歌影像的 URL,为什么不能 setTileSource 了事?
android
hai_android3 小时前
Kotlin 协程上下文(CoroutineContext)深度解析
android
恋猫de小郭3 小时前
Flutter A2UI 深度解析,它是怎么提供动态生产力的,然后为什么 A2UI 不只是 Flutter
android·前端·flutter