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());
        }
    
            //定义内部类,实现OnClickListene接口
        class MyListener implements OnClickListener{
    
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Log.i("定义内部类,实现OnClickListene接口", "点击事件");
            }
        }
    }

    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;
            }        
        }
    }

    效果如图:

  • 相关阅读:
    HDU 3951 (博弈) Coin Game
    HDU 3863 (博弈) No Gambling
    HDU 3544 (不平等博弈) Alice's Game
    POJ 3225 (线段树 区间更新) Help with Intervals
    POJ 2528 (线段树 离散化) Mayor's posters
    POJ 3468 (线段树 区间增减) A Simple Problem with Integers
    HDU 1698 (线段树 区间更新) Just a Hook
    POJ (线段树) Who Gets the Most Candies?
    POJ 2828 (线段树 单点更新) Buy Tickets
    HDU 2795 (线段树 单点更新) Billboard
  • 原文地址:https://www.cnblogs.com/McCa/p/5018851.html
Copyright © 2011-2022 走看看