android中点击事件的4种写法
android中获取到一些控件(比如说按钮)时,一般会为其添加点击事件,android中的点击事件一共有4中写法。
假设在布局文件中声明如下
....... <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/bt_1" /> .......
一、通过匿名内部类
主要的java代码如下,首先获取到该Button控件。
private Button bt_1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); bt_1 = (Button) findViewById(R.id.bt_1); bt_1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //点击后触发执行的代码 }
二、通过内部类
首先获取到该控件,再创建一个内部类,该内部类实现OnClickListener接口。
private Button bt_1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); bt_1=(Button) findViewById(R.id.bt_1); bt_1.setOnClickListener(new MyListener()); } class MyListener implements OnClickListener{ @Override public void onClick(View v) { // 点击Button后触发执行的代码 } }
三、在布局文件中添加onClick属性
更改布局文件中 Button的属性
<Button android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/bt_1" android:onClick="click" />
添加点击事件时,直接声明一个方法,不必获取到控件
// private Button bt_1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // bt_1 = (Button) findViewById(R.id.bt_1); } public void click(View view){ //点击Button后触发执行的代码 }
四、通过实现接口
使用此方法时,主方法要实现OnClickListener 接口,并且覆写接口中定义的onClick方法
public class MainActivity extends Activity implements OnClickListener { private Button bt_1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); bt_1 = (Button) findViewById(R.id.bt_1); //此处传入this即可 bt_1.setOnClickListener(this); } @Override public void onClick(View v) { // 点击Button后执行的代码 } }
温故而知新