zoukankan      html  css  js  c++  java
  • Android笔记——Button点击事件几种写法

    Button点击事件:大概可以分为以下几种:

    1. 匿名内部类
    2. 定义内部类,实现OnClickListener接口
    3. 定义的构造方法
    4. 用Activity实现OnClickListener接口
    5. 指定Button的onClick的属性

    首先我们简单地定义一个带Button的xml布局文件

      activity_main.xml:

    <Button
            android:id="@+id/bt1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="点击事件" />

    然后再写Java代码

      MainActivity.java:

    1.匿名内部类

    复制代码

    @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            
            bt = (Button) findViewById(R.id.bt1);
            //1.匿名内部类
            bt.setOnClickListener(new OnClickListener() {
                
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    Log.i("匿名内部类", "点击事件");
                }
            });
    }
    复制代码

    2.定义内部类,实现OnClickListener接口

      

    复制代码
    public class MainActivity extends Activity{
    
        private Button bt;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            
            bt = (Button) findViewById(R.id.bt);
    
            bt.setOnClickListener(new MyListener(this));
        }
    
            //定义内部类,实现OnClickListene接口
        class MyListener implements OnClickListener{

                 private Context context;

                 public Btn1ClickListener(Context c){
                        this.context=c;
                 }
                 @Override
                 public void onClick(View v) {
                     Toast t =Toast.makeText(context,
                            "你好,android 1班",
                            Toast.LENGTH_LONG);
                            t.show();

               }//给按钮添加弹窗事件

        }
    }

    复制代码

    3.定义的构造方法

      

    复制代码
    public class MainActivity extends Activity{
    
        private Button bt;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            
            bt = (Button) findViewById(R.id.bt);
    
            myListener();
        }
    
            //定义构造方法
            private void myListener() {
            // TODO Auto-generated method stub
            bt.setOnClickListener(new OnClickListener() {
                
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    Log.i("定义构造方法", "点击事件");
                }
            });
        }
    }
    复制代码

    4.用Activity实现OnClickListener接口

      

    复制代码
    public class MainActivity extends Activity implements OnClickListener {
    
        private Button bt;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            
            bt = (Button) findViewById(R.id.bt);
            bt.setOnClickListener(this);
        }
      
      
      //用Activity实现OnClickListener接口
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Log.i("用Activity实现OnClickListener接口", "点击事件");
            }
        
    }
    复制代码

    5.指定Button的onClick的属性:

      先在layout文件中指定onClick属性,然后到Activity中实现这个onButtonClick方法

    布局文件:

        <Button
    
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="click"
            android:text="点击事件" />

      Java代码:

    复制代码
    public class MainActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            
        }
    
        //5指定onClick属性方式
        public void click(View v) {
            // TODO Auto-generated method stub
            Log.i("指定onClick属性方式","点击事件"); 
        }
    }
    复制代码

      另外,多个按钮点击事件的处理,以指定onClick属性方式为例,获取其资源id,通过资源id,可以判断用户点击了哪个按钮了。

      

    布局文件:

    复制代码
     <Button
            android:id="@+id/bt1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="click"
            android:text="点击事件1" />
        
           <Button
            android:id="@+id/bt2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="click"
            android:text="点击事件2" />
         
           <Button
            android:id="@+id/bt3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="click"
            android:text="点击事件3" />/>
        
        <Button
            android:id="@+id/bt4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="click"
            android:text="点击事件4" />
    复制代码

    Java代码:

    复制代码
    public class MainActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            
        }
    
        //指定onClick属性方式
        //传人的View对象,就是用户按下的那个按钮对象
        public void click(View v) {
            // TODO Auto-generated method stub
            
            //获取组件的资源id
            int id = v.getId();
            switch (id) {
            case R.id.bt1:
                Log.i("指定onClick属性方式","bt1点击事件"); 
                break;
            case R.id.bt2:
                Log.i("指定onClick属性方式","bt2点击事件"); 
                break;
            case R.id.bt3:
                Log.i("指定onClick属性方式","bt3点击事件"); 
                break;
            case R.id.bt4:
                Log.i("指定onClick属性方式","bt4点击事件"); 
                break;
    
            default:
                break;
            }        
        }
    }
    复制代码
     

    复制:http://www.cnblogs.com/McCa/p/5018851.html

  • 相关阅读:
    POJ 1001 Exponentiation
    POJ 2105 IP Address
    条款1:视C++为一个语言联邦
    条款2:尽量使用const ,enum,inline替换define
    走台阶问题
    Oracle之分页问题
    Oracle之子查询:Top-N问题
    Facade——外观模式
    PROXY——代理模式
    C++ 内联函数
  • 原文地址:https://www.cnblogs.com/wugu-ren/p/6073017.html
Copyright © 2011-2022 走看看