android(2):按钮点击事件的四种写法(装载)
来源:互联网 发布:北京域名百科 编辑:程序博客网 时间:2024/05/21 07:59
【前言】
按钮少的时候用第三种的匿名内部类会比较快,比如写demo测试的时候或者登陆界面之类。
按钮多的时候一般选择第四种写法。
一、第一种写法:在XML文件中声明onClick属性(很少用)
在XML文件中显式指定控件的onClick属性,点击按钮时会利用反射的方式调用对应Activity中的onClick()方法。
(1)xml文件代码如下:
1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 android:orientation="vertical" > 6 7 <Button 8 android:id="@+id/btn1" 9 android:layout_width="wrap_content"10 android:layout_height="wrap_content"11 android:onClick="onClick"12 android:text="按钮1" />13 14 <Button15 android:id="@+id/btn2"16 android:layout_width="wrap_content"17 android:layout_height="wrap_content"18 android:onClick="onClick"19 android:text="按钮2" />20 21 </LinearLayout>
上面的代码中,我们在第11行、18行指定了onClick属性,然后接下来在Activity中写一个onClick同名方法。
(2)MainActivity.java:
1 package com.vae01; 2 3 import android.app.Activity; 4 import android.content.DialogInterface.OnClickListener; 5 import android.os.Bundle; 6 import android.view.View; 7 import android.widget.Button; 8 import android.widget.ImageView; 9 import android.widget.TextView;10 import android.widget.Toast;11 12 public class MainActivity extends Activity {13 14 private Button btn1, btn2;15 16 @Override17 protected void onCreate(Bundle savedInstanceState) {18 super.onCreate(savedInstanceState);19 setContentView(R.layout.activity_main);20 initView();21 }22 23 // 方法:初始化View24 private void initView() {25 btn1 = (Button) findViewById(R.id.btn1);26 btn2 = (Button) findViewById(R.id.btn2);27 }28 29 //方法:控件View的点击事件30 public void onClick(View v) {31 switch (v.getId()) {32 case R.id.btn1:33 Toast.makeText(MainActivity.this, "btn1", Toast.LENGTH_SHORT).show();34 break;35 case R.id.btn2:36 Toast.makeText(MainActivity.this, "btn2", Toast.LENGTH_SHORT).show();37 break; 38 39 default:40 break;41 }42 }43 }
注意,第30行的onClick()方法的权限是public,毕竟xml文件还要访问的嘛。
二、第二种写法:使用内部类(很少用)
(1)xml文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Button android:id="@+id/btn1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="按钮1" /> <Button android:id="@+id/btn2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="按钮2" /></LinearLayout>
(2)MainActivity.java:
1 package com.vae01; 2 3 import android.app.Activity; 4 import android.os.Bundle; 5 import android.view.View; 6 import android.view.View.OnClickListener; 7 import android.widget.Button; 8 import android.widget.ImageView; 9 import android.widget.TextView;10 import android.widget.Toast;11 12 public class MainActivity extends Activity {13 14 private Button btn1, btn2;15 16 @Override17 protected void onCreate(Bundle savedInstanceState) {18 super.onCreate(savedInstanceState);19 setContentView(R.layout.activity_main);20 initView();21 }22 23 // 方法:初始化View24 private void initView() {25 btn1 = (Button) findViewById(R.id.btn1);26 btn2 = (Button) findViewById(R.id.btn2);27 28 btn1.setOnClickListener(new MyClickListener());29 btn2.setOnClickListener(new MyClickListener());30 }31 32 class MyClickListener implements OnClickListener {33 @Override34 public void onClick(View v) {35 switch (v.getId()) {36 case R.id.btn1:37 Toast.makeText(MainActivity.this, "btn1", Toast.LENGTH_SHORT).show();38 break;39 case R.id.btn2:40 Toast.makeText(MainActivity.this, "btn2", Toast.LENGTH_SHORT).show();41 break;42 default:43 break;44 }45 }46 }47 }
注意第28、29行:不要忘记了绑定监听器。
三、第三种写法:匿名内部类(适合场景:测试、或者只有单个button的时候。使用较多)
(1)xml文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Button android:id="@+id/btn1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="按钮1" /> <Button android:id="@+id/btn2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="按钮2" /></LinearLayout>
(2)MainActivity.java:
1 package com.vae01; 2 3 import android.app.Activity; 4 import android.os.Bundle; 5 import android.view.View; 6 import android.view.View.OnClickListener; 7 import android.widget.Button; 8 import android.widget.Toast; 9 10 public class MainActivity extends Activity {11 12 private Button btn1, btn2;13 14 @Override15 protected void onCreate(Bundle savedInstanceState) {16 super.onCreate(savedInstanceState);17 setContentView(R.layout.activity_main);18 initView();19 }20 21 // 方法:初始化View22 private void initView() {23 btn1 = (Button) findViewById(R.id.btn1);24 btn2 = (Button) findViewById(R.id.btn2);25 26 btn1.setOnClickListener(new OnClickListener(){27 @Override28 public void onClick(View v) {29 Toast.makeText(MainActivity.this, "btn1", Toast.LENGTH_SHORT).show();30 }31 32 });33 34 btn2.setOnClickListener(new OnClickListener(){35 @Override36 public void onClick(View v) {37 Toast.makeText(MainActivity.this, "btn2", Toast.LENGTH_SHORT).show();38 }39 40 });41 }42 }
四、第四种写法:Activity实现View.OnClickListener接口(最常用)
Activity继承View.OnClickListener,由Activity实现OnClick(View view)方法,在OnClick(View view)方法中用switch-case对不同id代表的button进行相应的处理
(1)xml代码:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Button android:id="@+id/btn1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="按钮1" /> <Button android:id="@+id/btn2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="按钮2" /></LinearLayout>
(2)MainActivity.java:
1 package com.vae01; 2 3 import android.app.Activity; 4 import android.os.Bundle; 5 import android.view.View; 6 import android.view.View.OnClickListener; 7 import android.widget.Button; 8 import android.widget.Toast; 9 10 public class MainActivity extends Activity implements OnClickListener{11 12 private Button btn1, btn2;13 14 @Override15 protected void onCreate(Bundle savedInstanceState) {16 super.onCreate(savedInstanceState);17 setContentView(R.layout.activity_main);18 //初始化View19 initView();20 }21 22 // 方法:初始化View23 private void initView() {24 btn1 = (Button) findViewById(R.id.btn1);25 btn2 = (Button) findViewById(R.id.btn2); 26 27 //按钮绑定点击事件的监听器28 btn1.setOnClickListener(this);29 btn2.setOnClickListener(this);30 }31 32 //方法:按钮的单击事件33 @Override34 public void onClick(View v) {35 switch (v.getId()) {36 case R.id.btn1:37 Toast.makeText(MainActivity.this, "btn1", Toast.LENGTH_SHORT).show();38 break;39 case R.id.btn2:40 Toast.makeText(MainActivity.this, "btn2", Toast.LENGTH_SHORT).show();41 break;42 default:43 break;44 } 45 }46 }
原文装载:http://www.cnblogs.com/smyhvae/p/4375710.html
本次学习遇到几个问题(android studio)
1、MainActivity 继承Activity 重写onClick时候。 忘记了xml文件下增加属性 android:onClick="onClick"
2、实现OnClickListener 接口时候,导错包
android.view.View.OnClickListener void onClick(View v) Called when a view has been clicked. android.content.DialogInterface.OnClickListener(这个是针对对话框)onClick(DialogInterface dialog, int which) This method will be invoked when a button in the dialog is clicked.
- android(2):按钮点击事件的四种写法(装载)
- Android中按钮的点击事件的四种写法
- Android学习笔记(3)——按钮点击注册事件的四种写法
- 按钮点击事件的四种写法
- Android按钮事件的四种写法(activity跳转)
- Android学习(7) -- 点击事件的四种写法
- Android点击事件的四种写法
- android点击事件的四种写法
- Android点击事件的四种写法
- Android点击事件的四种写法
- android点击事件的四种写法
- [Android] 点击事件的四种写法
- Android----点击事件的四种写法
- 按钮Button的点击事件的四种写法
- Android_01_按钮点击事件的四种写法
- 安卓按钮点击事件的四种写法
- Android学习笔记(一):按钮点击事件的四种写法
- android 按钮的四种点击事件
- 238. Product of Array Except Self
- jqGrid 各种参数 详解
- 67. Add Binary*
- 停止一个线程
- Android快速开发推荐10个框架Android 快速开发框架:afinal、ThinkAndroid、andBase、KJFrameForAndroid、SmartAndroid、
- android(2):按钮点击事件的四种写法(装载)
- Java面试题集(七)--Spring常见面试问题
- CCF计算机软件能力认证模拟试题
- Leetcode.174 Dungeon Game |算法解析——动态规划
- 安卓开发笔记①:利用高德地图API进行定位、开发电子围栏、天气预报、轨迹记录、搜索周边(位置)
- (\S)? 匹配0个或者一个前导字符
- HHU Friendship of Mouse(map)
- html实战之二(图片选择器,js操作dom应用)
- HDU:Dividing