方式1:建立成員內部類java
//1:建立內部類 class ButtonListener implements OnCickListener{ //重寫OnClick方法 @Override public void onClick(View v){ // 該方法將在綁定的按鈕被點擊時調用,v對象爲綁定的控件 // 吐司使用方法:1,當前界面對象(上下文環境),2,顯示內容,三、吐司顯示時長 Toast.makeText(MainActivity.this, "按鈕被點擊啦!!", Toast.LENGTH_SHORT).show(); } } /* * 爲按鈕添加監聽器 第一步:XML佈局文件中添加<Button />控件併爲其設置id * 第二步:在java代碼中(須要顯示該控件的Activity中), 經過setContentView,裝載Button所在的XML佈局。 * 第三步:經過Button的id在Activity中獲取到Button的對象 * 第四步:爲button按鈕添加監聽事件 * a:建立內部類並實現OnClickListener接口 * b:重寫onClick方法(當按鈕被點擊後想幹什麼) * c:生成內部類對象 * d:爲按鈕添加監聽器 */ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 第二步 setContentView(R.layout.activity_linearlayout); // 第三步 button01 = (Button) findViewById(R.id.btn01); //生成監聽器(內部類)類的對象 MyButtonListener myButtonListener=new MyButtonListener(); //第四步 爲按鈕添加監聽器 button01.setOnClickListener(myButtonListener); }
方式2:建立匿名內部類android
/* * 第一步:獲取Button對象 * 第二步:直接調用button的setOnClickListener方法 * a,在方法中,傳入new OnClickListener(){ * onClick(){ * } * } * 匿名內部類以及內部類形式,這兩種方式在開發中最經常使用。 */ private Button btn; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_linearlayout); btn = (Button) findViewById(R.id.btn01); btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // 當按鈕點擊時調用 Toast.makeText(SecondActivity.this, "按鈕已被點擊(匿名內部類)", Toast.LENGTH_LONG).show(); } }); }
方式3:Activity直接實現監聽接口ide
public class ThirdActivity extends Activity implements OnClickListener { /* * 第一步:獲取到Button按鈕對象 * 第二步 : 直接使Activity實現OnClickListener接口 * 第三步:重寫onClick方法 * 第四步:爲按鈕添加監聽器(傳入this) */ private Button btn; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_linearlayout); btn = (Button) findViewById(R.id.btn01); btn.setOnClickListener(this); } @Override public void onClick(View v) { // 當按鈕被點擊時調用 Toast.makeText(ThirdActivity.this, "按鈕已被點擊(Activity直接實現接口)", Toast.LENGTH_LONG).show(); } }
方式4:經過XML佈局文件定義onClick屬性佈局
/* * 第一步:xml佈局文件中,爲button添加onclick屬性 * 第二步:在對應的Activity中,建立一個以onclick屬性值爲名字的方法 * a:修飾符爲public * b:返回值爲void * c:傳入參數爲View類型 */ @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_linearlayout); } public void MyButtonClick(View v) { // 將在btn01按鈕被點擊時調用 Toast.makeText(FourthActivity.this, "按鈕已被點擊(xml佈局文件中定義)", Toast.LENGTH_LONG) .show(); } activity_linearlayout.xml文件: <Button android:id="@+id/btn01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@color/blue" android:onClick="MyButtonClick" android:text="按鈕1" android:textColor="@color/cyan" android:layout_marginBottom="5dp"/>
附加:多按鈕使用用一個監聽器this
public class SixthActivity extends Activity { // 經過建立內部類爲多個按鈕添加監聽器 /* * 建立內部類實現OnClickListener接口 * onClick方法中,經過switch(R.id.xxx)方式區別當前被點擊的按鈕是哪一個 * 以後再對相應的按鈕作不一樣的處理 */ private Button btn01, btn02; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_linearlayout); btn01 = (Button) findViewById(R.id.btn01); btn02 = (Button) findViewById(R.id.btn02); ButtonsListener btnButtonsListener = new ButtonsListener(); btn01.setOnClickListener(btnButtonsListener); btn02.setOnClickListener(btnButtonsListener); } class ButtonsListener implements OnClickListener { @Override public void onClick(View v) { switch (v.getId()) { case R.id.btn01: Toast.makeText(SixthActivity.this, "已點擊第一個按鈕", Toast.LENGTH_LONG).show(); break; case R.id.btn02: Toast.makeText(SixthActivity.this, "已點擊第二個按鈕", Toast.LENGTH_LONG).show(); break; } } } } activity_linearlayout.xml文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Button android:id="@+id/btn01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@color/blue" android:onClick="MyButtonClick" android:text="按鈕1" android:textColor="@color/cyan" android:layout_marginBottom="5dp"/> <Button android:id="@+id/btn02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@color/blue" android:text="按鈕2" android:textColor="@color/cyan" /> </LinearLayout>