工具:Android Studio 2.2.2
水平:新手
新建一个名为ButtonClick工程。
布局很简单,设置一个id为button的Button即可。
<Button
android:id="@+id/button"
android:text="@string/btn_clickme"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
1.匿名内部类
public class MainActivity extends AppCompatActivity {
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button)findViewById(R.id.button);
//第一种方法-匿名内部类
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.button:
Toast.makeText(MainActivity.this,"第一种方式",Toast.LENGTH_SHORT).show();
break;
default:
break;
}
}
});
}
}
2.自定义监听类
//第二种方法-自定义点击事件监听类
class MyButtonClickLinstener implements View.OnClickListener{
@Override
public void onClick(View v){
switch (v.getId()) {
case R.id.button:
Toast.makeText(MainActivity.this, "第二种方式", Toast.LENGTH_SHORT).show();
break;
default:
break;
}
}
}
- 调用的时候直接new。
button.setOnClickListener(new MyButtonClickLinstener());
3.Activity继承View.OnClickListener
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
}
- 绑定的时候,直接使用this
button.setOnClickListener(this);
写个onClick方法,不用加@Override
public void onClick(View v){
switch (v.getId()){
case R.id.button:
Toast.makeText(MainActivity.this,"第三种方式",Toast.LENGTH_SHORT).show();
break;
default:
break;
}
}
4.使用android:onClick的属性
**在布局文件中修改Button的onClick属性为onClick。**android:onClick=”onClick”
- 不需要setOnClickListener方法了。直接使用第三种方法的onClick方法即可。
android:onClick绑定的是一个方法,方法名可以自定义,如testClick,然后在ManiActivity里写testClick方法。
public void testClick(View v){
switch (v.getId()){
case R.id.button:
Toast.makeText(MainActivity.this,"我也是第四种方式",Toast.LENGTH_SHORT).show();
break;
default:
break;
}
}
小结:
- 当按钮较少时,可以使用第一种和第二种写法。
- 当按钮较多时,可以使用第三种,方便。
- 第四种很灵活。