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)

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

  • 相关阅读:
    WebApp匯入資料之對話框實現
    JSON學習
    [JSON]jQuery的parseJSON()函數使用
    DataTable.Merge()一次應用
    WebApp匯入資料之From Excel
    含有HTML碼的欄位寫入資料庫處理方法
    访问Webservice错误
    ASP.NET整合應用實例後端Services合作
    强直性脊柱炎活动指数(ASDAS)在日常诊疗种评估生物制剂治疗患者的应用-来自葡萄牙登记系统风湿病患者
    脊柱炎症水平在疾病活动度高低不等的脊柱关节炎患者中表现相似-来自一项群体研究结果
  • 原文地址:https://www.cnblogs.com/Eric-zhao/p/4973197.html
Copyright © 2011-2022 走看看