zl程序教程

您现在的位置是:首页 >  移动开发

当前栏目

Android按钮实现点击事件的四种方式

Android事件 实现 方式 点击 按钮 四种
2023-09-11 14:18:54 时间

一.匿名内部内方式

此方法整体看上去简单易懂,个人比较常用

xml布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.button.MainActivity" >

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="按钮" />

</LinearLayout>

java代码

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		// 找到按钮控件
		Button button = (Button) findViewById(R.id.button);
		// 匿名内部内方式设置点击事件
		button.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				//在屏幕上显示提示 Toast 吐司
				Toast.makeText(MainActivity.this, "匿名内部内方式", Toast.LENGTH_SHORT).show();
			}
		});
	}
}

在多个控件都需要实现事件监听时,可见将匿名对象抽取出来,避免多次创建对象占用资源

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		// 1.找到按钮控件
		Button button = (Button) findViewById(R.id.button);
		// 3.设置按钮点击事件
		button.setOnClickListener(onClickListener);
	}
	// 2.得到 OnClickListener 对象
	OnClickListener onClickListener = new OnClickListener() {

		@Override
		public void onClick(View v) {
			// 可以使用 switch 通过匹配控件id 设置不同的按钮提示不同内容
			// view.getId() 得到点击的控件的id
			switch (v.getId()) {
			case R.id.button:
				Toast.makeText(MainActivity.this, "可以使用设置不同内容", Toast.LENGTH_SHORT).show();
				break;
			case 2:
				// 省略
				break;
			default:
				break;
			}
		}
	};
}

二.实现OnClickListener接口重写onClick方法

此方法适合用于多个控件实现点击事件监听

public class MainActivity extends Activity implements OnClickListener{

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		// 1.找到按钮控件
		Button button = (Button) findViewById(R.id.button);
		// 3.按钮设置点击事件
		button.setOnClickListener(this);
	}

	@Override
	public void onClick(View v) {
		// 2.实现OnClickListener接口,然后重写onClick方法
		Toast.makeText(MainActivity.this, "实现OnClickListener", Toast.LENGTH_SHORT).show();		
	}
}
此方法也可以自己创建一个类实现 OnClickListener接口

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		// 1.找到按钮控件
		Button button = (Button) findViewById(R.id.button);
		// 3.按钮设置点击事件
		button.setOnClickListener(new myOnclickLister());
	}
	
	// 2.自己创建类实现OnClickListener接口,然后重写onClick方法
	class myOnclickLister implements OnClickListener {

		@Override
		public void onClick(View v) {
			Toast.makeText(MainActivity.this, "实现OnClickListener", Toast.LENGTH_SHORT).show();
		}
	}
}

三.XML种设置按钮的OnClick属性

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.button.MainActivity" >

    <Button
        android:onClick="btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="按钮" />

</LinearLayout>

然后在java代码种建立onClick属性对应名字的方法

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}
	//定义与XML种OnClick属性名字对应的方法 注意在方法参数种加上 View v
	public void btn(View v) {
		Toast.makeText(MainActivity.this, "设置Onclick属性", Toast.LENGTH_SHORT).show();
	}
}
此方法虽然挺方便,代码简洁,但因为方面命名问题不易让他人读懂,且在多个控件种不方法使用。