点击事件的四种写法
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="sample.android_serialport_api.myapplication.MainActivity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="bt1" android:id="@+id/butto1"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="bt2" android:id="@+id/butto2"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="bt3" android:id="@+id/butto3"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="bt4" android:id="@+id/butto4"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="bt5" android:id="@+id/butto5"/> </LinearLayout>
package sample.android_serialport_api.myapplication; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; public class MainActivity extends AppCompatActivity implements View.OnClickListener{ Button bt1 = null; Button bt2 = null; Button bt3 = null; Button bt4 = null; Button bt5 = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); bt1 = (Button) findViewById(R.id.butto1); bt2 = (Button) findViewById(R.id.butto2); bt3 = (Button) findViewById(R.id.butto3); bt4 = (Button) findViewById(R.id.butto4); bt5 = (Button) findViewById(R.id.butto5); //方法1:匿名内部类 bt1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { System.out.println("方式1:按键1"); } }); bt2.setOnClickListener(new Bt2Listener()); bt3.setOnClickListener(this); bt4.setOnClickListener(this); bt5.setOnClickListener(this); } //方法2:内部类继承View.OnClickListener private class Bt2Listener implements View.OnClickListener{ public void onClick(View v) { System.out.println("方式2:按键2"); } } //方法3:activity继承View.OnClickListener public void onClick(View v) { System.out.print("方式3:"); int i = v.getId(); switch(i){ case R.id.butto3: System.out.println("按键3"); break; case R.id.butto4: System.out.println("按键4"); break; case R.id.butto5: System.out.println("按键5"); break; default:break; } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何调试 malloc 的底层源码
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端