基于监听的事件处理——直接绑定到标签

      Android还有一种更简洁的绑定事件监听器的方式,直接在界面布局文件中为指定标签绑定事件处理方法。

      对于很多Android界面组件标签而言,它们都支持onClick属性的属性值就是一个形如xxx(View source)的方法的方法名。

     例如下面界面界面布局文件:

      

<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:onClick="clickHandler"
        android:text="点击我" />

</LinearLayout>

  上面的程序中粗体字代码用于在界面布局文件中为Button按钮绑定一个事件处理方法:clickHandler,这就意味着开发者需要在该界面布局对应的Activity中定义一个void clickHandler(View source)方法,该方法将会负责处理该按钮上的单击事件。下面是该界面布局文件的Java代码。

  

package com.example.studyevent;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;

public class BindingTag extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_binding_tag);
    }
    //定义一个事件处理方法
    //其中source参数代表事件源
    public void clickHandler(View source)
    {
        EditText show=(EditText)findViewById(R.id.show);
        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.binding_tag, menu);
        return true;
    }

}

     上面的粗体字代码定义了一个clickHandler(View source)方法,当程序中的bn按钮被单击时,该方法将会被激发并处理bn按钮上的单击事件。

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

原文地址:https://www.cnblogs.com/wolipengbo/p/3407454.html