当你给同事件源设置设置同种监听器的时候,系统只会响应最后一个设置的有效
通过布局设置的监听优先级预先的设置的 所以在同事件源监听器也是不执行的
内部类方式监听:
public class MainActivity extends AppCompatActivity {
private Button mButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mButton = findViewById(R.id.onclick);
//内部类的方式监听
mButton.setOnClickListener(new onclick());
}
class onclick implements View.OnClickListener{
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.onclick:
Toast.makeText(MainActivity.this, "内部类的方式监听事件", Toast.LENGTH_SHORT).show();
break;
}
}
匿名内部类方式监听:
(适合一次性调用的事件处理)
public class MainActivity extends AppCompatActivity {
private Button mButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mButton = findViewById(R.id.onclick);
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this,"匿名方式监听",Toast.LENGTH_LONG).show();
}
});
}
}
通过事件源所在的类接口实现:
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button mButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mButton = findViewById(R.id.onclick);
mButton.setOnClickListener(MainActivity.this);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.onclick:
Toast.makeText(MainActivity.this,"通过事件源所在的类实现",Toast.LENGTH_LONG).show();
break;
}
}
}
通过外部类实现:
(创建一个MyClickListener.java)
public class MainActivity extends AppCompatActivity {
private Button mButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mButton = findViewById(R.id.onclick);
//通过外部类实现
mButton.setOnClickListener(new MyClickListener(MainActivity.this));
}
}
MyClickListener
public class MyClickListener implements View.OnClickListener {
private Activity mActivity;
public MyClickListener(Activity mActivity) {
this.mActivity = mActivity;
}
@Override
public void onClick(View v) {
Toast.makeText(mActivity,"外部类监听事件",Toast.LENGTH_LONG).show();
}
}
通过布局文件中的onClick属性实现点击事件
布局xml:
<Button
android:id="@+id/onclick"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="onclick"
android:onClick="show"/>
public class MainActivity extends AppCompatActivity {
private Button mButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mButton = findViewById(R.id.onclick);
}
//通过布局文件中的onClick属性实现点击事件
public void show(View v){
switch (v.getId()){
case R.id.onclick:
Toast.makeText(MainActivity.this,"通过布局文件中的onClick属性实现点击事件",Toast.LENGTH_LONG).show();
break;
}
}
}