android 12 click事件的不同实现方式

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:id="@+id/btnLogin"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="登陆" 
        android:onClick="onClick"/>
    <Button
        android:id="@+id/btnExit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="退出" 
        android:onClick="onClick"/>
    
</RelativeLayout>

 1 继承:

package com.sxt.day03_04;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Toast;
activity:写逻辑代码地方,自动创建,不能自己去new,第一个调用onCreate方法,
public class MainActivity extends Activity implements OnClickListener{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        //savedInstanceState用于保存Activity中的数据,是一个hashMap,
        super.onCreate(savedInstanceState);
        //将activity_main.xml设置为本Activity显示的布局
        //R代表res文件夹,只要res文件夹中有id值的控件都会在R中创建一个常量,
        setContentView(R.layout.activity_main);
        //将MainActivity.this地址保存在Button.OnClickListener属性中
        //点击的时候执行this这个监听器的onClick方法
        findViewById(R.id.btnLogin).setOnClickListener(this);
        findViewById(R.id.btnExit).setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {//View是所有布局的基类
        switch (v.getId()) {
        case R.id.btnLogin:
            Toast.makeText(this, "执行登陆操作", 2000).show();
            break;
        case R.id.btnExit:
            finish();
            break;
        }
    }

}

2 内部有名类:

package com.sxt.day03_05;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Toast;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //将MainActivity.this地址保存在Button.mOnClickListener属性中
        //用内部类(内部有名类,不是匿名类)实现,如果很多类都用LoginClickListener这个对象则有很好的复用性
        findViewById(R.id.btnLogin).setOnClickListener(new LoginClickListener());
    }

    class LoginClickListener implements OnClickListener{
        @Override
        public void onClick(View v) {
            if(v.getId()==R.id.btnLogin){
                Toast.makeText(MainActivity.this, "执行登陆操作", 2000).show();
            }
        }
    }

}

 3 外部类

package com.sxt.day03_06;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity {
    EditText metId,metPwd;//用户名  密码
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        setListener();//设置按钮的点击事件监听器
    }

    private void setListener() {
        MyClickListener listener=new MyClickListener(metId, metPwd, this);
        findViewById(R.id.btnLogin).setOnClickListener(listener);
        findViewById(R.id.btnExit).setOnClickListener(listener);
    }

    private void initView() {
        metId=(EditText) findViewById(R.id.etId);
        metPwd=(EditText) findViewById(R.id.etPwd);
    }

}
package com.sxt.day03_06;

import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;
import android.widget.Toast;

public class MyClickListener implements OnClickListener {
    EditText metId,metPwd;
    MainActivity mActivity;
    
    public MyClickListener(EditText metId, EditText metPwd,
            MainActivity mActivity) {
        super();
        this.metId = metId;
        this.metPwd = metPwd;
        this.mActivity = mActivity;
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.btnExit:
            mActivity.finish();//关闭Mainactivity
            break;
        case R.id.btnLogin:
            //取出登陆编号
            String id=metId.getText().toString();
            String pwd=metPwd.getText().toString();
            Toast.makeText(mActivity, "登陆编号:"+id+",登陆密码:"+pwd, Toast.LENGTH_LONG).show();
            break;
        }
    }

}

 

posted @ 2015-10-15 23:48  无天666  阅读(318)  评论(0编辑  收藏  举报