zoukankan      html  css  js  c++  java
  • 基于监听的事件处理——匿名内部类作为事件监听器类

          大部分时候,事件处理器都没有什么复用价值(可复用的代码通常都被抽象成了业务逻辑方法),因此大部分事件监听器只是临时使用一次,所以使用匿名内部类形式的事件监听器更合适。实际上,这种形式是目前最广泛的事件监听器形式。下面的程序使用匿名内部类来创建事件监听器。

          下面的程序示范匿名内部类作为事件监听器类

            该实例的界面布局文件如下:

       

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical"
        android:gravity="center_horizontal"
        >
    
        <EditText
            android:id="@+id/show"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:editable="false"
           >
        </EditText>
    
        <Button
            android:id="@+id/bn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="点击我" />
    
    </LinearLayout>

    该Activity的后台代码如下:

    package com.example.studyevent;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.view.Menu;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.EditText;
    
    public class AnonymousListener extends Activity {
        EditText show;
        Button bn;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_anonymous_listener);
            show=(EditText)findViewById(R.id.show);
            bn=(Button)findViewById(R.id.bn);
            //直接使用Activity作为事件监听器
            bn.setOnClickListener(new OnClickListener(){
                //实现事件处理方法
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    show.setText("bn按钮被点击了!");
                }});
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.anonymous_listener, menu);
            return true;
        }
    
    }

    上面的程序中粗体字部分使用匿名内部类创建了一个事件监听器对象,“new 监听器接口”或“new 事件适配器”的形式就是用于创建匿名内部类形式的事件监听器。

      运行上面的程序将看到如下效果:

     

  • 相关阅读:
    【C语言篇】☞ 2. 常量、变量、scanf函数和printf 函数
    【C语言篇】☞ 1. 前言、基础
    React快速入门教程
    数论-欧拉函数
    数论-约数
    数论-质数专题
    匈牙利算法求二分图的最大匹配数
    染色法判断二分图
    Kruskal算法
    Prim算法
  • 原文地址:https://www.cnblogs.com/wolipengbo/p/3407401.html
Copyright © 2011-2022 走看看