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

一.匿名内部内方式

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

xml布局



    

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属性



    

然后在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();
	}
}
此方法虽然挺方便,代码简洁,但因为方面命名问题不易让他人读懂,且在多个控件种不方法使用。


你可能感兴趣的:(Android,java,环境变量)