安卓开发基础:给控件设置监听事件的几种方法
来源:互联网 发布:盘古软件 编辑:程序博客网 时间:2024/05/16 10:38
首先是界面文件xml,以下的所有例子都是使用的这个界面文件:
<?xml version="1.0" encoding="utf-8"?><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" tools:context="com.lrh.xcyz.myapplication.MainActivity"> <Button android:id="@+id/btn1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="btn1" /> <Button android:id="@+id/btn2" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="btn2" /> <Button android:id="@+id/btn3" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="btn3" /> <Button android:id="@+id/btn4" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="btn4" /></LinearLayout>
经过一段时间的安卓开发经验,本人发现给控件设置监听事件有大致一下三种:
一:
第一种方法是最经常使用的,也是很方便的
首先绑定控件
<pre name="code" class="java">Button btn1 = (Button)findViewById(R.id.btn1);
之后设置监听事件
btn1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(MainActivity.this,"this is btn1",Toast.LENGTH_SHORT).show(); }});
二:
第二种也是很常用的方式
首先在界面文件中的控件上写一个OnClick属性
<Button android:id="@+id/btn1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="btn1" android:onClick="btn1_click"/>
然后在java代码中以这个属性作为函数名,写一个响应函数即可。
public void btn1_click(View view){ Toast.makeText(MainActivity.this,"this is btn1",Toast.LENGTH_SHORT).show();}
使用这种方式的时候要注意,这个函数一定得是public类型的,如果写成private类型的,那么无法成功设置监听事件。
三:
当我们要给界面上的多个空间绑定监听事件的时候,显然像以上两种方式都不是明智之举,难道我界面有一百个控件,你就设置一百个监听事件吗?这个时候第三种方式就很好使用了
首先,在创建这个activity的时候让她实现OnClickListener这个接口
public class MainActivity extends AppCompatActivity implements View.OnClickListener{protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn1 = (Button)findViewById(R.id.btn1); btn2 = (Button)findViewById(R.id.btn2); btn3 = (Button)findViewById(R.id.btn3); btn4 = (Button)findViewById(R.id.btn4); }}然后就要实现这个接口的方法Onclick(View v)public void onClick(View v) { switch (v.getId()){ case R.id.btn1: Toast.makeText(MainActivity.this,"this is btn1",Toast.LENGTH_SHORT).show(); break; case R.id.btn2: Toast.makeText(MainActivity.this,"this is btn2",Toast.LENGTH_SHORT).show(); break; case R.id.btn3: Toast.makeText(MainActivity.this,"this is btn3",Toast.LENGTH_SHORT).show(); break; case R.id.btn4: Toast.makeText(MainActivity.this,"this is btn4",Toast.LENGTH_SHORT).show(); break; }}
写完这个方法之后然后在onCreate方法中以此给每个添加监听器:
btn1.setOnClickListener(this);btn2.setOnClickListener(this);btn3.setOnClickListener(this);btn4.setOnClickListener(this);
完整的代码是这样的
public class MainActivity extends Activity implements View.OnClickListener{ private Button btn1,btn2,btn4,btn3; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn1 = (Button)findViewById(R.id.btn1); btn2 = (Button)findViewById(R.id.btn2); btn3 = (Button)findViewById(R.id.btn3); btn4 = (Button)findViewById(R.id.btn4); btn1.setOnClickListener(this); btn2.setOnClickListener(this); btn3.setOnClickListener(this); btn4.setOnClickListener(this); @Override public void onClick(View v) { switch (v.getId()){ case R.id.btn1: Toast.makeText(MainActivity.this,"this is btn1",Toast.LENGTH_SHORT).show(); break; case R.id.btn2: Toast.makeText(MainActivity.this,"this is btn2",Toast.LENGTH_SHORT).show(); break; case R.id.btn3: Toast.makeText(MainActivity.this,"this is btn3",Toast.LENGTH_SHORT).show(); break; case R.id.btn4: Toast.makeText(MainActivity.this,"this is btn4",Toast.LENGTH_SHORT).show(); break; } }}
或者也可以自己定义一个内部类(注意哦!!!这里最好是内部类哦,不然你想使用activity的某些资源还是会很麻烦的)来实现OnClick这个接口:
public class ClickListener implements View.OnClickListener{ @Override public void onClick(View v) { switch (v.getId()){ case R.id.btn1: Toast.makeText(MainActivity.this,"this is btn1",Toast.LENGTH_SHORT).show(); break; case R.id.btn2: Toast.makeText(MainActivity.this,"this is btn2",Toast.LENGTH_SHORT).show(); break; case R.id.btn3: Toast.makeText(MainActivity.this,"this is btn3",Toast.LENGTH_SHORT).show(); break; case R.id.btn4: Toast.makeText(MainActivity.this,"this is btn4",Toast.LENGTH_SHORT).show(); break; } }}
然后再onCreate中实例化一个ClickListener,给每个控件设置监听
ClickListener listener = new ClickListener();btn1.setOnClickListener(listener);btn2.setOnClickListener(listener);btn3.setOnClickListener(listener);btn4.setOnClickListener(listener);
完整的代码如下:
public class MainActivity extends Activity{ private Button btn1,btn2,btn4,btn3; private ClickListener listener; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn1 = (Button)findViewById(R.id.btn1); btn2 = (Button)findViewById(R.id.btn2); btn3 = (Button)findViewById(R.id.btn3); btn4 = (Button)findViewById(R.id.btn4); listener = new ClickListener(); btn1.setOnClickListener(listener); btn2.setOnClickListener(listener); btn3.setOnClickListener(listener); btn4.setOnClickListener(listener); } public class ClickListener implements View.OnClickListener{ @Override public void onClick(View v) { switch (v.getId()){ case R.id.btn1: Toast.makeText(MainActivity.this,"this is btn1",Toast.LENGTH_SHORT).show(); break; case R.id.btn2: Toast.makeText(MainActivity.this,"this is btn2",Toast.LENGTH_SHORT).show(); break; case R.id.btn3: Toast.makeText(MainActivity.this,"this is btn3",Toast.LENGTH_SHORT).show(); break; case R.id.btn4: Toast.makeText(MainActivity.this,"this is btn4",Toast.LENGTH_SHORT).show(); break; } } } }
那么这就是给控件=设置监听事件的几种方法,如果你还有第四种或者第五种方法欢迎和小交流哦!!
Ps:本文中若某些语言说的不够准确的话,请各位看官不吝赐教!!!!
0 0
- 安卓开发基础:给控件设置监听事件的几种方法
- 安卓给按钮添加监听事件的四种方法2.
- 安卓开发的监听事件
- 安卓开发之Button事件监听的几种类型
- 添加事件监听 的几种方法
- 安卓基础-点击事件的几种写法
- 安卓开发——对EditText设置软键盘的回车键的监听事件
- 安卓开发中给按钮(button)设置监听器的4种方法
- 安卓开发中给按钮(button)设置监听器的4种方法
- 【安卓开发】实现事件监听器的几种方式
- 【Unity&事件】事件监听响应的几种方法分析研究
- 安卓UI控件拖拽的几种方法
- 给自定义控件(Web Control)添加事件的几种方法
- 安卓开发最简单的按键监听事件
- 有关 给Layout设置监听事件后,与Layout子控件的响应关系
- 安卓开发-button事件监听
- 安卓开发退出程序的几种方法
- 3.安卓学习,监听事件的两种方法,private的用法
- You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE)
- 苹果笔记本电脑运行win系统时温度过高解决办法
- URL编码与解码
- 使用JAXB来完成Javabean与XML文件(字符串)之间的相互转换
- JDK环境变量配置
- 安卓开发基础:给控件设置监听事件的几种方法
- 我是一个路由器
- 封包和拆包
- 数据结构C语言描述———用顺序队列判断回文数
- Web应用中使用JavaMail发送邮件
- HDU 5724 Chess(博弈&状压)
- 基本标签-2
- Android学习之Toast的自定义_标题栏的隐藏
- url正则匹配