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 事件适配器”的形式就是用于创建匿名内部类形式的事件监听器。

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

     

  • 相关阅读:
    phpcms V9 MVC模式 与 URL访问解析
    PHPCMS V9 框架代码分析(入口程序)
    批处理命令——for
    批处理命令——set
    批处理命令——if
    AndroidStudio简单的apk混淆
    CKEditor与CKFinder学习--CKFinder源代码改动自己定义上传文件名称
    LeetCode_Path Sum
    Java 并发:内置锁 Synchronized
    做游戏长知识------基于行为树与状态机的游戏AI(一)
  • 原文地址:https://www.cnblogs.com/wolipengbo/p/3407401.html
Copyright © 2011-2022 走看看