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)

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

  • 相关阅读:
    记某app内购破解 – 安卓逆向菜鸟的初体验
    初探Android逆向:通过游戏APP破解引发的安全思考
    用IKVMC将jar转成dll供c#调用
    Java与.net 关于URL Encode 的区别
    RSA加密、解密、签名、验签的原理及方法
    C#使用SHA1加密类(RSAFromPkcs8)支持1024位和2048位私钥
    java与.net平台之间进行RSA加密验证
    RSA密钥,JAVA与.NET之间转换
    全面解决.Net与Java互通时的RSA加解密问题,使用PEM格式的密钥文件
    Android中Activity的启动模式(LaunchMode)和使用场景
  • 原文地址:https://www.cnblogs.com/Eric-zhao/p/4973197.html
Copyright © 2011-2022 走看看