Android學習筆記——給Button添加監聽器(四)

方式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>
相關文章
相關標籤/搜索