Android中设置Button监听最常用的两种方法,其实也适用于所有JAVA GUI编程

一、通过普通内部类

二、通过匿名内部类

直接上代码:

public class HandlerActivity extends Activity { private Button startBtn=null; private Button endBtn=null; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); startBtn=(Button) findViewById(R.id.startBtn); endBtn=(Button) findViewById(R.id.endBtn); //使用普通内部类设置监听 startBtn.setOnClickListener(new StartButtonListener()); //使用匿名内部类设置监听 endBtn.setOnClickListener(new OnClickListener(){ public void onClick(View v) { // TODO Auto-generated method stub System.out.println("end btn onClick"); } }); } class StartButtonListener implements android.view.View.OnClickListener{ public void onClick(View v) { // TODO Auto-generated method stub System.out.println("start btn onClick"); } } }

上面的代码并没有表现处出两种方法各自的优势,普通内部类也较好理解,下面简单说一下匿名内部类:

匿名类是不能有名称的类,所以没办法引用它们。必须在创建时,作为new语句的一部分来声明它们。
这就要采用另一种形式的new语句,如下所示:
new <类或接口> <类的主体>

即new superclassname{.....}或new interfacename{.....}
这种形式的new语句声明一个新的匿名类,它对一个给定的类进行扩展,或者实现一个给定的接口。它还创建那个类的一个新实例,并把它作为语句的结果而返回。要扩展的类和要实现的接口是new语句的操作数,后跟匿名类的主体。
如果匿名类对另一个类进行扩展,它的主体可以访问类的成员、覆盖它的方法等等,这和其他任何标准的类都是一样的。如果匿名类实现了一个接口,它的主体必须实现接口的方法。
注意匿名类的声明是在编译时进行的,实例化在运行时进行。这意味着for循环中的一个new语句会创建相同匿名类的几个实例,而不是创建几个不同匿名类的一个实例

更多相关文章

  1. Android中的跨进程通信的实现——远程调用过程和aidl
  2. 添加接口节点
  3. android 多媒体相关代码概况—(JAVA SCOPE)
  4. Android——使用Volley+fastJson在新线程中读取网络接口获取天气
  5. Android中四种实现点击事件的方法
  6. android listview拖拽,拖动item 改变位置
  7. Android和java创建xml文件和解析xml文件剖析
  8. android6.0 源码 系统应用之Music代码之类逻辑分析
  9. RxJava 的使用入门

随机推荐

  1. Jetpack Compose 重磅更新!增加RecyclerVi
  2. Android 多线程-----AsyncTask详解
  3. App Widget ————android 新一代移动
  4. Android自定义视图一:扩展现有的视图,添加
  5. Android魔术——手把手教你实现水晶球波
  6. Android实现pppoe拨号上网(一)概述
  7. 给小白分享几个学习Android的网站
  8. android从程序员到架构师之路----高焕堂
  9. Android单线程模型相关概念详解
  10. android游戏开发(三)触屏事件处理_手势识