Android學習筆記——給Button新增監聽器(四)
阿新 • • 發佈:2018-12-09
方式1:建立成員內部類
//1:建立內部類 class ButtonListener implements OnCickListener{ //重寫OnClick方法 @Override public void onClick(View v){ // 該方法將在繫結的按鈕被點選時呼叫,v物件為繫結的控制元件 // 吐司使用方法:1,當前介面物件(上下文環境),2,顯示內容,3、吐司顯示時長 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:建立匿名內部類
/* * 第一步:獲取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直接實現監聽介面
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"/>
附加:多按鈕使用用一個監聽器
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>