android Button 点击事件

来源:互联网 发布:银行软件外包管理办法 编辑:程序博客网 时间:2024/04/30 06:56

按钮在xml中的定义

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical">    <Button        android:id="@+id/text_click_action1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="按钮1"/>    <Button        android:id="@+id/text_click_action2"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="按钮2"/></LinearLayout>

1.匿名内部类:这种实现点击事件方式是初学者常用的点击方式,这种方式比较简单易懂,在界面中只有一两个按钮时,可以选用这种方式,但是当界面中有n多个按钮都要有点击事件实现时,这种方式会让代码看起来比较乱,而且不方便统一管理点击事件。

public class MainActivity extends AppCompatActivity {    public static final String TAG = "MainActivity";    private Button btnTextClickAction1;    private Button btnTextClickAction2;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        btnTextClickAction1 = (Button)findViewById(R.id.text_click_action1);        btnTextClickAction1.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Log.d(TAG, "匿名内部类点击事件1");            }        });        btnTextClickAction2 = (Button)findViewById(R.id.text_click_action2);        btnTextClickAction2.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Log.d(TAG,"匿名内部类点击事件2");            }        });    }}

2.用Activity实现OnClickListener接口:这种实现点击事件方式是让Activity实现OnClickListener接口并重写onClick方法,通过判断按钮ID的方式来确定是哪个按钮的点击事件,这种点击事件的实现适合用于多个控件实现点击事件监听。方便点击事件的统一管理。

public class MainActivity extends AppCompatActivity implements View.OnClickListener{    public static final String TAG = "MainActivity";    private Button btnTextClickAction1;    private Button btnTextClickAction2;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        btnTextClickAction1 = (Button)findViewById(R.id.text_click_action1);        btnTextClickAction1.setOnClickListener(this);        btnTextClickAction2 = (Button)findViewById(R.id.text_click_action2);        btnTextClickAction2.setOnClickListener(this);    }    @Override    public void onClick(View view) {        switch (view.getId()){            case R.id.text_click_action1:                Log.d(TAG, "实现OnClickListener接口点击事件1");                break;            case R.id.text_click_action2:                Log.d(TAG, "实现OnClickListener接口点击事件2");                break;        }    }}

3.自定义单击事件监听类:这种实现点击事件方式是自己创建类实现OnClickListener接口,然后重写onClick方法。这种实现方式和第一种实现方式几乎相同,只不过是给这个listener起了个名字,这种方法一般适合多个不同的按钮,实现一样的点击事件。

public class MainActivity extends AppCompatActivity {    public static final String TAG = "MainActivity";    private Button btnTextClickAction1;    private Button btnTextClickAction2;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        btnTextClickAction1 = (Button) findViewById(R.id.text_click_action1);        btnTextClickAction1.setOnClickListener(new ClickActionListener());        btnTextClickAction2 = (Button) findViewById(R.id.text_click_action2);        btnTextClickAction2.setOnClickListener(new ClickActionListener());    }    private class ClickActionListener implements View.OnClickListener {        @Override        public void onClick(View view) {            Log.d(TAG,"自定义实现类实现点击事件");        }    }}

4.指定Button的onClick的属性:这种实现点击事件方式是在XML文件中显示指定按钮的onClick属性,这样点击按钮时会利用反射的方式调用对应Activity中的click()方法,这种方式实现起来方便而且代码简洁,但因为代码通用性可读性较差。通常不建议使用。

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical">    <Button        android:id="@+id/text_click_action1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:onClick="Click"        android:text="按钮1"/>    <Button        android:id="@+id/text_click_action2"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:onClick="Click"        android:text="按钮2"/></LinearLayout>
public class MainActivity extends AppCompatActivity {    public static final String TAG = "MainActivity";    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }    public void Click(View view){        switch (view.getId()){            case R.id.text_click_action1:                Log.d(TAG,"自定义属性实现点击事件1");                break;            case R.id.text_click_action2:                Log.d(TAG,"自定义属性实现点击事件2");                break;        }    }}
原创粉丝点击