第一种:结合layout层的xml布局文件声明方法(不建议使用,希望代码和和layout层分开、解耦)
在当前activity里写好点击事件:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
//点击事件
public void btnClick(View view){
Toast.makeText(MainActivity.this,"点击了按钮",Toast.LENGTH_LONG).show();
}
}
在xml布局添加点击事件的方法:
<!--btnClick 为activity写好的点击事件名称-->
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="btnClick"
android:text="点击"/>
第二种:内部实现类:
xlm布局内容如下:
<Button
android:id="@+id/bt_test"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="点击"/>
activity内容如下:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Step 2: 获取控件,设置事件监听
Button bt=findViewById(R.id.bt_test);
ClickListener clickListener=new ClickListener();
bt.setOnClickListener(clickListener);
}
//Step 1:创建内部类
class ClickListener implements View.OnClickListener{
@Override
public void onClick(View v) {
int id=v.getId();
switch (id){
case R.id.bt_test:
Toast.makeText(MainActivity.this,"点击了按钮",Toast.LENGTH_LONG).show();
}
}
}
}
第三种:activity实现OnclickListener
xml布局:
<Button
android:id="@+id/bt_test"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="点击"/>
activity:
//Step 1:activity实现View.OnClickListener
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Step 3:获取当前控件,设置监听
Button bt=findViewById(R.id.bt_test);
bt.setOnClickListener(this);
}
//Step 2:在该实现方法里获取点击事件的对象,写需要执行的代码
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.bt_test:
Toast.makeText(MainActivity.this,"点击了按钮",Toast.LENGTH_LONG).show();
break;
}
}
}
第四种:匿名内部类
xml布局文件:
<Button
android:id="@+id/bt_test"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="点击"/>
activity:
public class MainActivity extends AppCompatActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取控件
Button bt=findViewById(R.id.bt_test);
//监听点击事件:用匿名内部类实现
bt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this,"点击了按钮",Toast.LENGTH_LONG).show();
}
});
}
}