1. 程式人生 > >Android-1.按鈕單擊的4種監聽方式(電話撥號器)

Android-1.按鈕單擊的4種監聽方式(電話撥號器)

Android電話撥號器

簡介

需求:實現一個撥號的功能,主介面包含一個Text Fields型別的控制元件EditText和一個Button按鈕,當按下按鈕後撥打EditText中的電話號碼.

分析:電話號是一串純數字文字,不應該包含其他字元。所以EditText的輸入型別是phone,並且當按下按鈕之後應該檢測是否有空格和換行符或者空值。
android:inputType = “phone”
當按下按鈕時應呼叫系統的撥號功能來撥號。
設定按鈕的單擊監聽器並在click方法內使用Intent表明意圖為呼叫號碼number,最後啟動一個Activity傳入intent

Button.setOnClickListener(View.OnClickListener(){
public
void click(View v) { Intent intent=new Intent(); //設定行為:呼叫 intent.setAction(Intent.ACTION_CALL); //URI型別 統一資源識別符號 定位符 intent.setData(Uri.parse("tel:" + number)); startActivity(intent); } });

按鈕的監聽

方法1 建立類實現介面 android.view.View.OnClickListener和方法onClick

缺點:多個按鈕時要建立多個物件,並且要新增加一個內部類
這個方法的具體實現如下

 private class MyListener implements View.OnClickListener {
        //當按鈕點選的時候呼叫
        @Override
        public void onClick(View v) {
            //呼叫打電話函式
            callPhone();
        }
    }

方法2 使用匿名內部類 實現介面OnClickListener

優點:寫起來簡單
缺點:多個按鈕時必須每個都要寫一遍,很繁瑣

//2.採用匿名內部類建立點選事件
        Button bt_dial = (Button) findViewById(R.id.bt_dial);
        bt_dial.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                callPhone();
            }
        });

方法3 讓當前的Activity 實現介面OnClickListener 和方法 onClick

優點:簡單,可以對多個按鈕同時監聽,並且不用new 物件

public class MainActivity extends Activity implements View.OnClickListener{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        Button bt_dial = (Button) findViewById(R.id.bt_dial);
 //3.多個按鈕,讓MainActivity實現點選事件,implements View.OnClickListener
         bt_dial.setOnClickListener(this);
    }
//3.接口裡面未實現的方法
    @Override
    public void onClick(View v) {
        switch(v.getId())
        {
            case R.id.bt_dial:
                callPhone();
                break;
            default:
                return;
        }
    }
}

方法4 在佈局檔案中使用 android:onClick=”函式名”

//activity_main.xml
<Button
        android:onClick="dialButtonClicked"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/dail"
        android:id="@+id/bt_dial"
        android:layout_below="@+id/et_number"
        android:layout_alignParentRight="true"
        />
//MainActivity.java
//4.在佈局檔案裡面繫結一個點選的方法
    public void dialButtonClicked(View view){
        callPhone();
    }