一、準備工作 1、項目結構 2、佈局文件(activity_main.xml) 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/and ...
一、準備工作
1、項目結構
2、佈局文件(activity_main.xml)
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:tools="http://schemas.android.com/tools" 4 android:layout_width="match_parent" 5 android:layout_height="match_parent" 6 tools:context=".MainActivity" 7 android:orientation="vertical"> 8 9 <Button 10 android:id="@+id/btn_click" 11 android:text="點擊我" 12 android:layout_width="match_parent" 13 android:layout_height="wrap_content" /> 14 15 </LinearLayout>
二、效果
三、三種實現方式
1、(方式一)在與事件綁定時定義事件監聽器
該方法是當通過調用組件的setXXXListener()方法設置監聽器時,定義只能當前的組件使用的事件監聽器,代碼如下
1 public class MainActivity extends AppCompatActivity implements View.OnClickListener { 2 3 @Override 4 protected void onCreate(Bundle savedInstanceState) { 5 super.onCreate(savedInstanceState); 6 setContentView(R.layout.activity_main); 7 8
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btnClick = findViewById(R.id.btn_click);
//使用findViewById方法對控制項進行獲取
//R.id.btn_click對應佈局中添加的id屬性
btnClick.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//裡面寫點擊後想要實現的效果
Toast.makeText(MainActivity.this,
"按鈕被點擊", Toast.LENGTH_SHORT).show();
//這裡是彈出一個消息---"按鈕被點擊"
}
});
}
}
9 //使用findViewById方法對控制項進行獲取 10 //R.id.btn_click對應佈局中添加的id屬性 11 12 btnClick.setOnClickListener(new View.OnClickListener() { 13 @Override 14 public void onClick(View view) { 15 //裡面寫點擊後想要實現的效果 16 Toast.makeText(MainActivity.this, 17 "按鈕被點擊", Toast.LENGTH_SHORT).show(); 18 //這裡是彈出一個消息---"按鈕被點擊" 19 } 20 }); 21 } 22 23 }
【提示】Button btnClick = findViewById(R.id.btn_click);在不同版本編譯器可能需要類型轉換。(Alt +Enter提供類型轉換處理)
2、(方式二)當前Activity類實現監聽器介面
該方法使當前Activity類實現相應的監聽器介面,完成監聽器中的抽象方法,組件綁定監聽器時,監聽器對象為Activity對象。代碼如下
1 public class MainActivity extends AppCompatActivity implements View.OnClickListener { 2 3 @Override 4 protected void onCreate(Bundle savedInstanceState) { 5 super.onCreate(savedInstanceState); 6 setContentView(R.layout.activity_main); 7 8 Button btnClick = findViewById(R.id.btn_click);//控制項的獲取 9 btnClick.setOnClickListener(MainActivity.this); 10 //需要傳入介面實現類的實例。 11 //此時介面實現類的實例為MainActivity 12 } 13 14 @Override 15 public void onClick(View view) { 16 switch (view.getId()){ 17 case R.id.btn_click: 18 //裡面寫點擊後想要實現的效果 19 Toast.makeText(MainActivity.this, 20 "按鈕被點擊", Toast.LENGTH_SHORT).show(); 21 //這裡是彈出一個消息---"按鈕被點擊" 22 } 23 } 24 }
【提示】先寫MainActivity的實現implements View.OnClickListener,然後會出現紅線,把滑鼠點在紅線上,Alt+Enter添加未實現的方法 onclick
【註意】不要忘記將介面實現的實例傳給組件的setXXXListener方法
3、XML佈局文件中設置回調方法
該方法是在XML佈局文件中設置回調方法,在Java代碼中實現該方法即可。
【提示】此方法不是一個通用的方法,但對按鈕等常用組件的點擊事件處理確實很方便。
①activity_main.xml 佈局文件中添加onclick 屬性,設定回調方法,具體代碼如下
1 <Button 2 android:id="@+id/btn_click" 3 android:layout_width="match_parent" 4 android:layout_height="wrap_content" 5 android:onClick="Click" />
【註意】當設置Click方法時,java代碼中的Click方法還未創建,Click下方會出現紅色波浪線,不用著急,在MainActivity中添加java代碼即可
②MainActivity.java
1 public void Click(View view){ 2 switch (view.getId()){ 3 case R.id.btn_click://此處是對佈局中設置的id直接進行判斷, 4 // 不需要對控制項進行獲取(findviewByID) 5 Toast.makeText(this, "按鈕被點擊", Toast.LENGTH_SHORT).show(); 6 break; 7 } 8 }
【提示】此時的方法和方法二中的onClick方法不同,但裡面的寫法與方法二相同。(如果是只有一個控制項添加了onclick屬性為Click,可以直接寫效果代碼,但不建議這樣寫)