在Android的开发中,对于点击事件的OnClickListener有下面四种实现方式,可以根据实际场景的需要选择合适的用法。下面以Button按钮来举例说明。
方法一:匿名内部类
适合场景:任何场景都通用,但对于一个Activity中要是有多个控件要实现onClick方法就会显得代码冗余。
Button bt_Demo = (Button)findViewById(R.id.bt_Demo);bt_Demo.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) { //具体点击操作的逻辑}});
方法二:自定义单击事件监听类
同方法一,两者差别不大
Button bt_Demo = (Button)findViewById(R.id.bt_Demo);bt_Demo.setOnClickListener(new ButtonListener());private class ButtonListener implements View.OnClickListener{@Overridepublic void onClick(View arg0) { // TODO Auto-generated method stub switch(arg0.getId()){ case R.id.btn_Demo: //具体点击操作的逻辑 break; default: break; }} }
方法三:Activity继承View.OnClickListener
适合场景:适合界面上有不同类型的控件,这种方式将所有控件的onClick方法在一个方法里面实现,看起来比较简洁
public class MyActivity extends Activity implements OnClickListener { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //按纽 Button btn_Demo = (Button)findViewById(R.id.bt_Demo); bt_Demo.setOnClickListener(this); } @Override public void onClick(View v) { switch(arg0.getId()){ case R.id.btn_Demo: //具体点击操作的逻辑 break; default: break; } }}
方法四:在XML文件中显示指定按钮的onClick属性
在布局文件中加上android:onClick=“方法名”,对于有些控件(比如TextView)需要兼容旧的SDK API,还需要加上android:clickable=“true”
<TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:clickable="true" android:onClick="onTextViewClick" android:text="点击事件" android:textSize="16sp" />
//在代码中实现onTextViewClick()方法即可。public void onTextViewClick(View view){ //具体点击操作的逻辑}
来源地址:https://blog.csdn.net/daokedream/article/details/129863431