android学习笔记(二) Android中的点击事件

本文详细介绍了在Android开发中,Button控件的四种点击事件实现方式:通过内部类、匿名内部类、Activity实现OnClickListener接口以及在布局文件中直接设置。每种方法都有其适用场景和特点,适合不同程度的开发者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

1、内部类方法实现

2、匿名内部类实现

3、用Activity实现OnClickListener接口

4、在布局中给按钮添加点击事件


1、内部类方法实现

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //加载一个布局
        setContentView(R.layout.activity_main);
        //[1]找到我们关心的控件  edittext  button 
        
        et_number = (EditText) findViewById(R.id.editText1);
        
        //[2]找到按钮 
        Button btn_call = (Button) findViewById(R.id.button1);
        
        //[3]给button按钮设置一个点击事件 
        btn_call.setOnClickListener(new MyClickListener());
        
        
        
    }

    
    //定义一个类去实现  按钮需要的接口类型 
    private class MyClickListener implements OnClickListener{
    	//Called when a view has been clicked. 当按钮被点击的时候调用
		@Override
		public void onClick(View v) {
			//[4]获取edittext 文本内容 
			String number = et_number.getText().toString().trim();
			if ("".equals(number)) {
				/**
				 * context 上下文 
				 */
				Toast.makeText(MainActivity.this, "number不能为空", 1).show();
				return;
			}
			
			//[5]进行拨打电话   意图 Intent 
			Intent intent = new Intent(); //创建一个意图对象   打   猫 狗  代码  电话
			//[5.1]设置动作 
			intent.setAction(Intent.ACTION_CALL);
			//[5.2]设置要拨打的数据 
			/**
			 * uri:统一资源标示符 自己定义的路径 想代表什么就代表说明 
			 * url:统一资源定位符 www.baidu.com
			 */
			intent.setData(Uri.parse("tel:"+number));
			
			//[6]开启意图 
			startActivity(intent);
			
			
		}
    	
    }

2、匿名内部类实现

​
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //加载一个布局
        setContentView(R.layout.activity_main);
        //[1]找到我们关心的控件  edittext  button 
        
        et_number = (EditText) findViewById(R.id.editText1);
        
        //[2]找到按钮 
        Button btn_call = (Button) findViewById(R.id.button1);
        
        //[3]给button按钮设置一个点击事件 
        
        //☆☆☆☆ 按钮第二种点击事件     匿名内部类的方式
        btn_call.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				
				//[4]实现拨打电话的逻辑
				callPhone();
			
			}
		});
            
    }

​

3、用Activity实现onClickListener()接口,该方方在按钮特别多,点击事件多的情况下使用效果更好

@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		// 加载一个布局
		setContentView(R.layout.activity_main);
		// [1]找到我们关心的控件 edittext button
		Button btn_call2 = (Button) findViewById(R.id.button2);
		Button btn_call3 = (Button) findViewById(R.id.button3);
		Button btn_call4 = (Button) findViewById(R.id.button4);

		et_number = (EditText) findViewById(R.id.editText1);

		// [2]找到按钮
		Button btn_call = (Button) findViewById(R.id.button1);

		// [3]给button按钮设置一个点击事件

		// ☆☆☆☆ 按钮第三种点击事件
		btn_call.setOnClickListener(this);
		btn_call2.setOnClickListener(this);
		btn_call3.setOnClickListener(this);
		btn_call4.setOnClickListener(this);

	}

// 当我点击按钮的时候执行
	@Override
	public void onClick(View v) {
		// 具体判断点击的是哪个按钮
		switch (v.getId()) {
		case R.id.button1: // 代表点击了第一按钮
  
			callPhone();
			break;

		case R.id.button2: // 代表点击了第一按钮
			callPhone();
			break;

		case R.id.button3: // 代表点击了第一按钮
			callPhone();
			break;

		case R.id.button4: // 代表点击了第一按钮

			System.out.println("我被点击了");
			break;

		default:
			break;
		}

	}

4、在布局中添加按钮的点击属性

<Button
        android:onClick="click"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/button4"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="87dp"
        android:text="test" />
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属性方式","点击事件"); 
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值