• button的OnClickListener的三种实现方法


    onclick事件的定义方法,分为三种,分别为在xml中进行指定方法;在Actitivy中new出一个OnClickListenner();实现OnClickListener接口三种方式。

    代码分别如下:

    1. xml指定onclick事件,这种方式比较适用于指定的button,能使java代码相对简化一些:

    xml文件中:

    <Button android:text="Button03"
        android:id="@+id/Button03"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        <span style="color:#FF0000;">android:onClick="Btn3OnClick"</span>>
    </Button>

    红色部分指定响应的方法名!

    Activity中定义方法:

    public void Btn3OnClick(View view){
        Intent intent = new Intent(mainActivity.this, fristActivity.class);
        intent.putExtra("data", "mainActivity");
        startActivity(intent);
    }

    2. 在onCreate方法中为button指定绑定操作,以下方法中,xml里如果同时指定了事件的执行方法,则优先执行xml中的内容。

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        findViewById(R.id.Button03).setOnClickListener(new OnClickListener(){
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(mainActivity.this, fristActivity.class);
                intent.putExtra("data", "mainActivity");
                startActivity(intent);            
            }        
        });
    }

    此种方式会使代码看上去比较直观,但是效率不高,特别是写在listView的适配器中getView时,new出多个对象,占用资源。优化版的写法如下,将点击对象提出来如下:

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        findViewById(R.id.Button03).setOnClickListener(onclick);
    }
    OnClickListener onclick = new OnClickListener(){
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(mainActivity.this, fristActivity.class);
            intent.putExtra("data", "mainActivity");
            startActivity(intent);    
        }
    };

    3. 实现OnClickListener接口,这种方式使用量比较多,能解决同一个activity中所有的onclick问题。

    public class mainActivity extends Activity implements OnClickListener{
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            findViewById(R.id.Button02).setOnClickListener(this);
            findViewById(R.id.Button03).setOnClickListener(this);
        }
        public void onClick(View view) {
            switch (v.getId()) {
                case R.id.Button03:
                    Intent intent = new Intent(mainActivity.this, fristActivity.class);
                    intent.putExtra("data", "mainActivity");
                    startActivity(intent);    
                    break;            
                case R.id.Button02:
                    Intent intent = new Intent(mainActivity.this, loginActivity.class);
                    intent.putExtra("data", "mainActivity");
                    startActivity(intent);    
                    break;    
                default:
                    break;
            }
        }
        ……
    }
  • 相关阅读:
    完全备份、差异备份以及增量备份的区别(转)
    Backup Exec Inventory 与Catalog的含义(转载)
    从客户端中检测到有潜在危险的Request.Form值的解决办法
    IQueryable与IEnumberable的区别(转)
    SQL递归查询(with cte as) 物料分解
    Http权威指南笔记(二) Http状态码大全
    Http权威指南笔记(一) URI URL URN 关系
    echarts在.Net中使用实例(二) 使用ajax动态加载数据
    echarts在.Net中使用实例(一) 简单的Demo
    sql显示12个月数据
  • 原文地址:https://www.cnblogs.com/zhujiabin/p/4186561.html
Copyright © 2020-2023  润新知