zoukankan      html  css  js  c++  java
  • Android点击事件(click button)的四种写法

    在学习android开发和测试的时候发现不同的人对于click事件的写法是不一样的,上网查了一下,发现有四种写法,于是想比较一下四种方法的不同

    第一种方法:匿名内部类

    代码:

    package com.zdx.testdemo1;

    import javax.security.auth.PrivateCredentialPermission;

    import android.app.Activity;
    import android.os.Bundle;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.widget.Button;
    import android.widget.Toast;
    import android.view.View.OnClickListener;
    public class MainActivity extends Activity {
    private Button btNum1;
    private Toast notify;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    btNum1 = (Button)findViewById(R.id.bt_click);
    btNum1.setOnClickListener(new OnClickListener() {

    @Override
        public void onClick(View v) {
        // TODO Auto-generated method stub
      notify = Toast.makeText(MainActivity.this, "点击事件调用成功", Toast.LENGTH_SHORT);
      notify.show();
      }
                              });
    }
    }

    注意这里:notify = Toast.makeText(MainActivity.this, "点击事件调用成功", Toast.LENGTH_SHORT);

    这里注意要传的是MainActivity.this而不是this,因为是匿名内部类,当前对象是OnClickListener,makeText方法需要的activity的上下文,也就是activity.this,为什么不是getApplicationContext()呢,这个是因为getApplicationContext(),返回应用的上下文,生命周期是整个应用。Activity.this 返回当前activity的上下文,生命周期只是它所在的Activity。我们只需要传Activity.this 就可以了

    第二种方法:定义一个监听事件的类

    package com.zdx.testdemo1;

    import android.app.Activity;
    import android.os.Bundle;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.Toast;

    public class MainActivity extends Activity {
    private Button btNum1;
    static Toast notify;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    btNum1=(Button)findViewById(R.id.bt_click);
    btNum1.setOnClickListener(new ClickEventListener());
    }

    class ClickEventListener implements OnClickListener{

    @Override
    public void onClick(View v) {
    // TODO Auto-generated method stub
    switch (v.getId()) {
    case R.id.bt_click:
    notify = Toast.makeText(MainActivity.this, "点击事件调用成功", Toast.LENGTH_SHORT);
    notify.show();
    break;
    default:
    break;
    }
    }

    }
    }

    第三种方法:不创建内部类,直接activity实现OnClickListener接口

    package com.zdx.testdemo1;

    import android.app.Activity;
    import android.os.Bundle;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.Toast;

    public class MainActivity extends Activity implements OnClickListener{
    private Button btNum1;
    static Toast notify;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    btNum1=(Button)findViewById(R.id.bt_click);
    btNum1.setOnClickListener(this);
    }


    @Override
    public void onClick(View v) {
    // TODO Auto-generated method stub
    switch (v.getId()) {
    case R.id.bt_click:
    notify = Toast.makeText(MainActivity.this, "点击事件调用成功", Toast.LENGTH_SHORT);
    notify.show();
    break;
    default:
    break;
    }
    }


    }

     第四种方法:我觉得最方便的一种,在xml文件定义Button的onClick属性

    package com.zdx.testdemo1;

    import android.app.Activity;
    import android.os.Bundle;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.Toast;

    public class MainActivity extends Activity {
    static Toast notify;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    }


    public void clickEvent(View v) {
    notify = Toast.makeText(MainActivity.this, "点击事件调用成功", Toast.LENGTH_SHORT);
    notify.show();

    }
    }

    注意xml文件定义的onClick属性的名字一定要和activity中点击事件方法的名字一样:

     android:onClick="clickEvent"

    public void clickEvent(View v)

    我觉得第三种和第四种比较好,尤其第四种很方便,不过很多开发还是习惯用第一种和第二种

  • 相关阅读:
    Spring-四种常用注解
    Spring-IOC
    Spring-bean 的管理细节
    Android R.java文件
    MySQL | windows10 安装MySQL : 无法将“mysql”项识别为 cmdlet、函数、脚本....
    统计知识 | 决定系数 R方、调整后的R方、F值
    R | R语言表达式中常用的符号
    回归分析 | R语言回归算法、模型诊断
    R | 探索性数据分析 EDA
    R语言基础 | 概率分布的表示方法
  • 原文地址:https://www.cnblogs.com/Eric-zhao/p/4973197.html
Copyright © 2011-2022 走看看