简单聊一下Android中Button的五种监听事件:
1.在布局文件中为button添加onClick属性,Activity实现其方法
2.匿名内部类作为事件监听器类
3.内部类作为监听器
4.Activity本身作为事件监听器,实现onClickListener
5.外部类作为监听器
ButtonListenerActivity.class
public class ButtonListenerActivity extends AppCompatActivity implements View.OnClickListener{ private Button bt_one,bt_two,bt_three,bt_four,bt_five; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_button_listener); bt_two = (Button) findViewById(R.id.bt_listener_two); bt_three = (Button) findViewById(R.id.bt_listener_three); bt_four = (Button) findViewById(R.id.bt_listener_four); bt_five = (Button) findViewById(R.id.bt_listener_five); //方式二:匿名内部类作为事件监听器类 bt_two.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(ButtonListenerActivity.this,"方式二:匿名内部类",Toast.LENGTH_LONG).show(); } }); //方式三:内部类作为事件监听器类 MyButton listener = new MyButton(this); bt_three.setOnClickListener(listener); //方式四:Activity本身作为事件监听器,实现onClickListener bt_four.setOnClickListener(this); //方式五:外部类作为事件监听器类 bt_five.setOnClickListener(new MyButtonListener(this)); } //1.方式一:在布局文件中为button添加onClick属性,Activity实现其方法 public void buttonClick(View view){ Toast.makeText(ButtonListenerActivity.this,"方式一:onClick",Toast.LENGTH_LONG).show(); } //方式四:Activity本身作为事件监听器,实现onClickListener--重写onClick() @Override public void onClick(View v) { Toast.makeText(ButtonListenerActivity.this,"方式四:Activity本身作为事件监听器",Toast.LENGTH_LONG).show(); } //方式三:内部类作为事件监听器类 class MyButton implements View.OnClickListener{ private Context context; public MyButton(Context context){ this.context = context; } @Override public void onClick(View v) { Toast.makeText(context,"方式三:内部类",Toast.LENGTH_LONG).show(); } } }
activity_button_listener.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.langdon.taiyang.androidtest.button.ButtonListenerActivity"> <Button android:id="@+id/bt_listener_one" android:text="方式一:onClick绑定" android:onClick="buttonClick" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:id="@+id/bt_listener_two" android:text="方式二:匿名内部类" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:id="@+id/bt_listener_three" android:text="方式三:内部类监听" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:id="@+id/bt_listener_four" android:text="方式四:Activity本身实现监听事件" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:id="@+id/bt_listener_five" android:text="方式五:外部类作为监听" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout>
MyButtonListener.class
public class MyButtonListener implements View.OnClickListener { private Context context; public MyButtonListener(Context context){ this.context = context; } @Override public void onClick(View v) { Toast.makeText(context,"方式五:外部类",Toast.LENGTH_LONG).show(); } }