Android 組件的三種點擊事件寫法


一、准備工作

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,可以直接寫效果代碼,但不建議這樣寫)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM