android中点击事件四种响应方式

点击事件的四种写法:

  1. xml文件中指定view的onClick属性,利用反射的方式调用对应Activity中的click()方法
  2. 匿名内部类
  3. 内部类实现OnClickListener接口
  4. 当前类直接实现OnClickListener接口

第一种方式

xml文件中指定view的onClick属性,利用反射的方式调用对应Activity中的click()方法
xml文件中代码:

1
2
3
4
5
6
<Button
android:id="@+id/btn_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="click"
android:text="按钮"/>

Activity中代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.
onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void click(View v) {
Toast.makeText(this, "第一种方式", Toast.LENGTH_SHORT).show();
}
}

第二种方式

匿名内部类
Activity中代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = (Button) findViewById(R.id.btn_button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "第二种方式", Toast.LENGTH_SHORT).show();
}
});
}
}

第三种方式

内部类实现OnClickListener接口
Activity中代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = (Button) findViewById(R.id.btn_button);
button.setOnClickListener(new MyOnClickListener());
}
class MyOnClickListener implements View.OnClickListener{
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "第三种方式", Toast.LENGTH_SHORT).show();
}
}
}

第四种方式

当前类实现OnClickListener接口
Activity中代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = (Button) findViewById(R.id.btn_button);
button.setOnClickListener(this);
}
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "第四种方式", Toast.LENGTH_SHORT).show();
}
}

总结

第四种用的比较多,第一种方式不推荐,违背了解耦设计思想。

深山老猿 wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!
如对你有帮助,请我喝杯咖啡吧!0.0
显示 Gitment 评论