仓廪实则知礼节,衣食足则知荣辱。这篇文章主要讲述Android按钮点击事件相关的知识,希望能为你提供帮助。
2020-03-04 23:02:18
IDE版本:
文章图片
Button控件点击方式比较多,本文简单介绍以下六种:
①布局中指定onClick属性
②使用匿名内部类
③在当前Activity中实现OnClickListener接口
④创建内部类的形式
⑤创建外部类的形式
⑥Lambda表达式
布局文件【button1.xml】
< ?xml version="1.0" encoding="utf-8"?> < RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> < !--按钮点击事件的实现--> < Button android:id="@+id/button" android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="click" android:text="按钮1" /> < Button android:id="@+id/button2" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/button" android:text="按钮2" /> < /RelativeLayout>
①②MainActivity.java文件【方式一、方式二】
public class MainActivity extends AppCompatActivity { //按钮点击事件【方法1和方法2的验证】 //按钮1是在布局中指定onClick属性的方式实现点击事件 //按钮2是通过匿名内部类的方式来实现点击事件private Button myBtn_one; private Button myBtn_two; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.button1); //通过findViewById()初始化控件 myBtn_one = (Button) findViewById(R.id.button); myBtn_two = (Button) findViewById(R.id.button2); //方法二:匿名内部类方法实现按钮2的点击事件 myBtn_two.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { myBtn_two.setText("按钮2已被点击"); } }); } //方法一:通过实现onClick()方法,实现按钮1的点击事件 public void click(View v){ myBtn_one.setText("按钮1已被点击"); } }
③MainActivity.java文件【方式三】
public class MainActivity extends AppCompatActivity implements View.OnClickListener{//实现OnClickListener接口 //按钮点击事件【方法3的验证】 //方法三:在当前Activity中实现OnClickListener接口 private Button myBtn_one; private Button myBtn_two; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.button1); //通过findViewById()初始化控件 myBtn_one = (Button) findViewById(R.id.button); myBtn_two = (Button) findViewById(R.id.button2); //this代表OnClickListener的引用 myBtn_one.setOnClickListener(this); myBtn_two.setOnClickListener(this); } //父类View.OnClickListener【接口】是public,子类实现接口必须是public,权限不能低于父类 @Override public void onClick(View v) { switch (v.getId()) { case R.id.button: myBtn_one.setText("按钮1已被点击"); break; case R.id.button2: myBtn_two.setText("按钮2已被点击"); break; } } }
【Android按钮点击事件】
④MainActivity.java文件【方式四】
public class MainActivity extends AppCompatActivity{ //按钮点击事件【方法4的验证】 //方法四:创建内部类 private Button myBtn_one; private Button myBtn_two; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.button1); //通过findViewById()初始化控件 myBtn_one = (Button) findViewById(R.id.button); myBtn_two = (Button) findViewById(R.id.button2); //引用实现OnClickListener接口内部类对象 myBtn_one.setOnClickListener(new Mybutton()); myBtn_two.setOnClickListener(new Mybutton()); }public class Mybutton implements View.OnClickListener{//实现OnClickListener接口 @Override public void onClick(View v) { switch (v.getId()) { case R.id.button: myBtn_one.setText("按钮1已被点击"); break; case R.id.button2: myBtn_two.setText("按钮2已被点击"); break; } } }}
⑤MainActivity.java文件【方式五】
public class MainActivity extends AppCompatActivity{ //按钮点击事件【方法5的验证】 //方法五:创建外部类 private Button myBtn_one; private Button myBtn_two; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.button1); //通过findViewById()初始化控件 myBtn_one = (Button) findViewById(R.id.button); myBtn_two = (Button) findViewById(R.id.button2); //引用实现OnClickListener接口外部类对象 myBtn_one.setOnClickListener(new Mybutton(){@Override public void onClick(View v) { super.onClick(v); myBtn_one.setText("按钮1已被点击"); } }); myBtn_two.setOnClickListener(new Mybutton(){ @Override public void onClick(View v) { super.onClick(v); myBtn_two.setText("按钮2已被点击"); } }); } } class Mybutton implements View.OnClickListener{//实现OnClickListener接口@Override public void onClick(View v) { } }
⑥MainActivity.java文件【方式六】
在使用Lambda表达式之前需要进行配置【两步】:
第一步:在“Project Structure”中加入“JDK Location”【如下图所示】
如果JDK选择的不是JDK8可能出现“请选择一个有效的 jdk 8目录(Please choose a valid JDK 8 directory)”的信息,不行的话就去官网下JDK8。
文章图片
第二步:设置“sourceCompatibility”和“targetCompatibility”为1.8
文章图片
public class MainActivity extends AppCompatActivity{ //按钮点击事件【方法6的验证】 //方法六:Lambda表达式 //① 修改build.gradle文件,【enable jack已经过时,不可设置】,设置sourceCompatibility,targetCompatibility为jdk1.8 private Button myBtn_one; private Button myBtn_two; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.button1); //通过findViewById()初始化控件 myBtn_one = (Button) findViewById(R.id.button); myBtn_two = (Button) findViewById(R.id.button2); myBtn_one.setOnClickListener(view-> myBtn_one.setText("按钮1已被点击")); myBtn_two.setOnClickListener(view-> myBtn_two.setText("按钮2已被点击")); } }
运行效果:
文章图片
2020-03-04 23:57:50
推荐阅读
- Android Socket通信
- Android中网络框架的简单封装
- 使用APT实现Android中View的注入
- Android 杂项
- Springboot集成mybatis通用Mapper与分页插件PageHelper(推荐)
- CMDB3完善采集端代码(ssh方案的多线程采集), 异常处理, 服务端目录结构的设计(django的app), API数据分析比对入库
- ApplicationDocker 安装 MySQL
- Android Studio 连接mumu模拟器
- 2020Android春招面试经历(已拿今日头条28Koffer)