2013年10月30日 星期三

Android Button OnClickListener 使用方法(一)

Android Button 的 OnClickListener 有幾點作法:
方法如下



activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <!-- 定義Layout 第一個 Button ID為 Button_1-->
    <Button
        android:id="@+id/Layout_Button_1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button 1" 
        />
    
    <!-- 定義Layout 第二個 Button ID為 Button_2-->
    <Button
        android:id="@+id/Layout_Button_2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button 2" 
        />
    
    <!-- 定義Layout 第一個 TextView ID為 TextView_1-->
    <TextView 
        android:id="@+id/Layout_TextView_1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView" 
        />

</LinearLayout>
}
MainActivity.java
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {
  
  //定義 Button 名稱為Button_1 與 Button_2
  private Button Button_1,Button_2;
  
  //定義 TextView 名稱為TextView_1
  private TextView TextView_1;

  //定義 OnClickListener ClickIntHere 
  private OnClickListener ClickIntHere = new OnClickListener() {
    @Override
    //按下Button事件時會進入這個 function
    public void onClick(View v) {
      if(v.getId() == Button_1.getId()){
        //判斷如果是 Button_1 按下時會進入這
        //TextView_1 顯示 Click Button_1
        TextView_1.setText("Click Button_1");
      }
      else if(v.getId() == Button_2.getId()){
        //判斷如果是 Button_2 按下時會進入這
        //TextView_1 顯示 Click Button_2
        TextView_1.setText("Click Button_2");
      }
    }
  };

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    
    //設定讀取的layout為 activity_main.xml
    setContentView(R.layout.activity_main);
  
    //定義的 Button 與 TextView 對應到  Layout裡定義的物件I
    Button_1 = (Button)findViewById(R.id.Layout_Button_1);
    Button_2 = (Button)findViewById(R.id.Layout_Button_2);
    TextView_1 = (TextView)findViewById(R.id.Layout_TextView_1);
    
    //設定Button 聆聽 的物件 ClickIntHere
    Button_1.setOnClickListener(ClickIntHere);
    Button_2.setOnClickListener(ClickIntHere);
  }
}

重點提醒:
  1、import 時需注意 是否為 android.view.View.OnClickListener而不是 android.content.DialogInterface.OnClickListener。

  2、onClick(View v) 是 OnClickListener 實作方法,它回傳的 View v 的意思是 它給予一個類型 View 的東西 名稱為 v,v名稱是可更改的。

沒有留言:

張貼留言