在开发中为控件添加Listener是非常常见的工作,最简单的添加Listener方式可以这样:
findViewById(R.id.myButton).setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Do stuff
}
});
采用上述方法添加Listener有个缺点就是如果控件太多的话,Listener数量也会增多,因此,可以采用如下的小窍门减少Listener的数量:
View.OnClickListener handler = View.OnClickListener() {
public void onClick(View v) {
switch (v.getId()) {
case R.id.Button01: // doStuff
break;
case R.id.Button02: // doStuff
break;
}
}
}
findViewById(R.id.myButton).setOnClickListener(handler);
findViewById(R.id.myOtherButton).setOnClickListener(handler);
在Android1.6里面,添加Listener的工作变得相当的简单(感觉更像在做网页编程!),具体步骤如下:
1.首先在layout里面定义Button并指定响应的Listener
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
<Button
android:text="Button01"
android:id="@+id/Button01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="myClickHandler01"
/>
<Button
android:text="Button02"
android:id="@+id/Button02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="myClickHandler02"
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
</LinearLayout>
其中以下这两行就是新增的特性:
android:onClick="myClickHandler01"
android:onClick="myClickHandler02"
2.在活动里面定义public的方法myClickHandler01、和myClickHandler02(注意这两个方法必须有一个View的形参)。
package com.ray.test;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
public class TestOnClickListener extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public void myClickHandler01(View target){
setTitle("myClickHandler01");
}
public void myClickHandler02(View target){
setTitle("myClickHandler02");
}
}
当然,你也可以采用这种写法:
将两个按钮设置到同一个Listener
android:onClick="myClickHandler"
android:onClick="myClickHandler"
package com.ray.test;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
public class TestOnClickListener extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public void myClickHandler(View target){
switch (target.getId()) {
case R.id.Button01:
setTitle("myClickHandler01");
break;
case R.id.Button02:
setTitle("myClickHandler02");
break;
}
}
}
参考文章:《UI framework changes in Android 1.6
》(需翻墙)
分享到:
相关推荐
总结来说,实现Android静态广播监听器的关键步骤包括: 1. 创建继承自`BroadcastReceiver`的类,并在`AndroidManifest.xml`中静态注册。 2. 在`BroadcastReceiver`的`onReceive()`方法中处理广播事件。 3. 使用`...
在Android开发中,事件监听器(Event Listeners)是实现用户交互和响应各种事件的关键机制。标题提到的“android 外部类作为事件监听器类”是指将一个非匿名类(外部类)作为事件处理的对象,这在某些情况下可能是...
`listen()`方法会将我们的监听器添加到`TelephonyManager`,从而开始监听。 需要注意的是,为了能够访问到电话相关的敏感信息,你的应用需要在AndroidManifest.xml文件中声明`READ_PHONE_STATE`权限: ```xml ...
此外,除了`OnClickListener`,Android还提供了其他类型的监听器,如`OnLongClickListener`用于处理长按事件,以及`View.OnTouchListener`用于处理更精细的触摸事件。这些监听器可以单独或组合使用,以满足各种交互...
【Android计算器源码详解(1.6版)】 在Android开发领域,计算器应用是一个常见的学习项目,它能够帮助开发者理解基本的用户界面构建、事件处理以及计算逻辑。本篇文章将详细解析一个基于Android 1.6版本的计算器...
在Android开发中,全局事件监听器是一种非常实用的设计模式,它允许开发者在整个应用程序范围内监听特定的事件,而无需在每个需要响应的类中都添加监听代码。标题中的"android全局事件监听器"指的是一个实现此类功能...
在Android开发中 我们经常会需要在Android界面上弹出一些对话框 比如询问用户或者让用户选择 关于Android Dialog的使用方法 已经有很多blog做出了详细的介绍(比如博客:7种形式的Android Dialog使用举例) 但是只是...
android 后台监听按键事件方法及demoandroid 后台监听按键事件方法及demo
此外,如果你的头部视图需要响应用户的触摸事件,记得设置点击监听器。例如,你可以将一个Button放在头部视图中,并为其添加`OnClickListener`。 综上所述,添加头部到Android的ListView是一项常见的自定义需求。...
在Android开发中,Button...理解并熟练运用这些监听器,能让你的Android应用更加灵活和响应用户操作。在实际项目中,还可以结合其他组件和设计模式,如使用LiveData和ViewModel,来实现更高效的数据绑定和响应式编程。
在实现Fragment中监听触摸事件时,需要注意的是,需要在Fragment中维护一个监听器列表,并且需要在Fragment中实现dispatchTouchEvent方法,以便将触摸事件分发给每个监听器。此外,还需要在使用时,将监听器注册到...
在Android开发中,利用重力感应来实现特定功能是一种常见的技术。通过集成传感器API,开发者可以获取设备的重力变化数据,从而实现如来电时翻转手机静音这样的实用功能。下面将详细介绍如何在Android中利用重力感应...
在开发时遇到一个问题,需要对软...但是由于android不直接提供对软键盘打开与关闭操作的监听器,所以必须自己来写一个关于软键盘打开/关闭的监听器。 原理是通过对OnGlobalLayoutListener()来实现对软键盘的状态监听器
使用`View.setOnClickListener()`方法设置监听器。 总之,动态添加图片在Android应用中涉及多个层面,包括组件的动态创建、图片的选择与处理、用户交互以及网络通信等。`multiimagechooser-master`项目是一个很好的...
在Android系统中,添加开机音乐是一项个性化设置,可以让用户在设备启动时听到自己喜欢的音乐,提升使用体验。在Android 9(Pie)版本中,虽然系统默认并未提供直接的开机音乐设置选项,但通过一些技术手段,我们...
最后,ContentResolver 类提供了 notifyChange 方法,用于通知所有注册到 Uri 的监听器,告诉他们内容发生了改变。该方法需要两个参数:Uri 和 ContentObserver。Uri 是要通知的 Uri,ContentObserver 是一个实现了 ...
在Android平台上,开发Java应用程序时,我们经常需要处理与文件系统相关的任务,其中之一就是实现文件监听器。这个功能允许我们实时监控一个特定的文件夹,一旦该文件夹中有新的文件出现,程序可以立即做出响应,...
Android编程自定义View时添加自己的监听器示例 Android编程自定义View时添加自己的监听器是Android开发中的一项重要技术,通过添加自己的监听器,可以实现自定义View中的事件监听和回调机制。在Android中,监听器是...
第二种方法可以复用监听器,减少了代码量,但判断逻辑可能复杂;第三种方法则让布局和事件处理更加分离,更符合声明式编程的理念,但不适合需要复杂逻辑的情况。 在实际开发中,开发者可以根据项目需求和个人喜好...
然后,我们需要创建一个`PhoneStateListener`的子类,这个监听器会接收并处理电话状态的变化。在子类中重写`onCallStateChanged`方法,该方法会在电话状态改变时被调用。下面是`PhoneStateListener`的基本实现: ``...