最近开始学习Android的开发,首先学习了一下在Android开发中的按钮点击事件的实现,在网上找到四种实现方式在此做一个记录,方便日后温习查看。
方式一、匿名内部类:
new 一个
OnClickListener
接口作为Button
的setOnClickListener
方法的参数
public class MainActivity extends AppCompatActivity {
Button btn1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn1 = (Button)findViewById(R.id.btn1);
// 给Button添加点击事件的第一种方式:匿名内部类
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this,Example1.class);
startActivity(intent);
}
});
}
方式二、内部类:
在
Button
所在的class
内部再建一个类ClickListener
并实现OnClickListener
接口。
直接new一个ClickListener
的实例作为Button
的setOnClickListener
方法的参数
public class MainActivity extends AppCompatActivity {
Button btn1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn1 = (Button)findViewById(R.id.btn1);
// 给Button添加点击事件的第二种方式:内部类
btn1.setOnClickListener(new ClickListener());
}
class ClickListener implements View.OnClickListener {
@Override
public void onClick(View view) {
Log.i("Info","btn1 goto next page");
Intent intent = new Intent(MainActivity.this,Example3.class);
startActivity(intent);
}
}
}
方式三、实现OnClickListener
接口
Button
所在的class
本身实现OnClickListener
接口,并且作为Button
的setOnClickListener
方法的参数
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
Button btn1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn1 = (Button)findViewById(R.id.btn1);
btn1.setOnClickListener(this);
}
// 给Button添加点击事件的第三种方式:实现OnClickListener接口
@Override
public void onClick(View view) {
Log.i("Info","btn1 goto next page");
Intent intent = new Intent(MainActivity.this,Example3.class);
startActivity(intent);
}
}
方式四、直接在布局文件中指定点击事件
以上三种方式归根结底都是实现
OnClickListener
来监听Button
的点击事件,而下面的方式是直接在布局文件中直接指定响应Button
的点击事件的方法
xml
<Button
android:id="@+id/btn4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="指定点击事件"
android:onClick="btn4Click"
/>
java
public class MainActivity extends AppCompatActivity {
Button btn1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
// 给Button添加点击事件的第四种方式:直接在布局文件中指定点击事件
public void btn4Click(View view){
Log.d("DEBUG","btn1 go to next page");
Intent intent = new Intent(MainActivity.this,Example4.class);
startActivity(intent);
}
}