A, via an internal class
public class EventActivity extends AppCompatActivity {
private Button mBtnEvent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_event);
mBtnEvent=findViewById(R.id.btn_event_second);
//内部类实现
mBtnEvent.setOnClickListener(new OnClick());
}
class OnClick implements View.OnClickListener{
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.btn_event_second:
ToastUtil.showMsg(EventActivity.this,"click...");
break;
}
}
}
}
Second, realized by anonymous inner classes
public class EventActivity extends AppCompatActivity {
private Button mBtnEvent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_event);
mBtnEvent=findViewById(R.id.btn_event_second);
//匿名内部类
mBtnEvent.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ToastUtil.showMsg(EventActivity.this,"click...");
}
});
}
}
Third, to achieve through the class where the event source
public class EventActivity extends AppCompatActivity implements View.OnClickListener{
private Button mBtnEvent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_event);
mBtnEvent=findViewById(R.id.btn_event_second);
mBtnEvent.setOnClickListener(EventActivity.this);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.btn_event_second:
ToastUtil.showMsg(EventActivity.this,"click...");
break;
}
}
}
Fourth, the external class implements
- Create an external class:
public class MyClickListener implements View.OnClickListener {
private Activity mActivity;
public MyClickListener(Activity activity){
this.mActivity=activity;
}
@Override
public void onClick(View v) {
ToastUtil.showMsg(mActivity, "click.....");
}
}
- Call the constructor outside of class:
public class EventActivity extends AppCompatActivity {
private Button mBtnEvent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_event);
mBtnEvent.setOnClickListener(new MyClickListener(EventActivity.this));
}
}
Fifth, the layout file onClick property implementation
- Layout files add onClick:
<Button
android:id="@+id/btn_event_second"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="click me"
android:textAllCaps="false"
android:onClick="show"/>
- Activity file to add onClick method called in:
public class EventActivity extends AppCompatActivity {
private Button mBtnEvent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_event);
}
public void show(View view){
switch (view.getId()){
case R.id.btn_event_second:
ToastUtil.showMsg(EventActivity.this,"click from show");
break;
}
}
}