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

    效果如图:

  • 相关阅读:
    葡萄城报表介绍:多数据源报表
    葡萄城报表介绍:报表打印
    葡萄城报表介绍:财务报表分析
    葡萄城报表介绍:数据钻取
    用递归法计算斐波那契数列的第n项
    奋进
    //java递归调用输出一个目录下的所有子目录及文件名称 (最新增加)
    分享下通过java 读取目录及子目录下指定文件名的路径 并放到一个List数组里面返回遍历和写到文件里(同时将不会出现覆盖问题和重复读入问题)
    $_SERVER函数获取的内容解释
    mysql数据库忘记密码
  • 原文地址:https://www.cnblogs.com/McCa/p/5018851.html
Copyright © 2020-2023  润新知