Android——UI事件的处理机制(基于监听器)

1.普通内部类(常用)

xml

<Button
        android:hint="reset"
        android:layout_columnWeight="1"
        android:id="@+id/reset"/>

java

public class MainActivity extends AppCompatActivity {

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.gridexlayout);
 //添加监听器
        //监听器 本身是一个接口,需要写实现类
        Button bt_reset = (Button)findViewById(R.id.reset);

        //第一种 设置监听器的实现类的实例
        bt_reset.setOnClickListener(new ResetButtonClickListen());

}
//1.用内部类实现监听器的接口 private class ResetButtonClickListen implements View.OnClickListener { public void onClick(View v) { Button bt = (Button)v; String str = bt.getText().toString(); //在内部类里调用外部类的实例:外部类的类名.this Toast.makeText(MainActivity.this,str+"click",Toast.LENGTH_LONG).show(); } } }

2.匿名内部类

java

public class MainActivity extends AppCompatActivity {
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.gridexlayout);

        Button bt_reset = (Button)findViewById(R.id.reset);

       //第二种 匿名内部类
        bt_reset.setOnClickListener(new View.OnClickListener(){

            public void onClick(View v)
            {
                Button bt = (Button)v;
                String str = bt.getText().toString();

                //在内部类里调用外部类的实例:外部类的类名.this
                Toast.makeText(MainActivity.this,str+"click",Toast.LENGTH_LONG).show();
            }
        });
}

3.外部类

java

public class MainActivity extends AppCompatActivity {
    //public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    //bt_reset.setOnClickListener(this);
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.gridexlayout);
     

         //添加监听器
        //监听器 本身是一个接口,需要写实现类
        Button bt_reset = (Button)findViewById(R.id.reset);



        //第三种 外部类
        //bt_reset.setOnClickListener(new WaibuListener());

    }
}

java2

package com.example.chenshuai.test322;

import android.view.View;
import android.widget.Button;

/**
 * Created by chenshuai on 2016/3/26.
 */
public class WaibuListener implements View.OnClickListener {
    public void onClick(View v)
    {
        Button bt = (Button)v;
        String str = bt.getText().toString();
        
    }
}

4.直接绑到标签上

xml

<Button
        android:hint="send"
        android:layout_columnWeight="1"
        android:onClick="onclick"/>

java

public class MainActivity extends AppCompatActivity {
    //public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    //bt_reset.setOnClickListener(this);
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.gridexlayout);


        //添加监听器
        //监听器 本身是一个接口,需要写实现类
        Button bt_reset = (Button)findViewById(R.id.reset);

//传递的View参数 是触发这个事件视图实例(在这里是Button)
    public void onclick(View v)
    {
        Button bt = (Button)v;
        String str = bt.getText().toString();

        Toast.makeText(this,str+"Button click",Toast.LENGTH_LONG).show();
    }
}

5.Avtivity直接实现

java

    public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    bt_reset.setOnClickListener(this);
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.gridexlayout);
       


        //添加监听器
        //监听器 本身是一个接口,需要写实现类
        Button bt_reset = (Button)findViewById(R.id.reset);
}
}
原文地址:https://www.cnblogs.com/Chenshuai7/p/5326982.html