android事件处理的四种写法--电话拨号为例

温馨提示:如果觉得文字或者代码过小,请按住ctrl+鼠标滑轮滚动,调整浏览器的显示比例。

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/insert_number" />

    <EditText
        android:id="@+id/numET"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:inputType="phone" />

    <Button
        android:id="@+id/callBT"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="onClick" //使用MainActivity3加上此代码,前面两个不使用
        android:text="@string/call" />

</LinearLayout>

strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">Phone</string>
    <string name="action_settings">Settings</string>
    <string name="hello_world">Hello world!</string>
    <string name="insert_number">请输入电话号码</string>
    <string name="call">呼叫此号码</string>

</resources>

MainActivity.java  第一种触发事件的写法

package com.zwj.phone;


import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends Activity {
	private EditText numET;		// 由于多个方法使用, 定义为成员变量
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        numET = (EditText) findViewById(R.id.numET);				// 找到文本框
        Button callBT = (Button) findViewById(R.id.callBT);			// 找到按钮对象
        callBT.setOnClickListener(new MyOnClickListener());			// 添加监听器
    }


    private class MyOnClickListener implements OnClickListener {	//定义监听器类, 实现OnClickListener
    	public void onClick(View v) {								// 定义事件对应的处理方法
    		String num = numET.getText().toString();				// 获取其中号码
    		Intent intent = new Intent();							// 创建意图对象
    		intent.setAction(Intent.ACTION_CALL);					// 设置意图的动作(拨打电话)
    		intent.setData(Uri.parse("tel:" + num));				// 设置意图的数据(电话号码)
    		startActivity(intent);									// 使用意图开启一个界面(拨打电话的界面)
    	}	
    }
    
} 
MainActivity2.java  第二种触发事件的写法

package com.zwj.phone;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity2 extends Activity implements OnClickListener {	// 当前类即是一个Activity, 也是一个OnClickListener
	
    private EditText numET;		// 由于多个方法使用, 定义为成员变量

	public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        numET = (EditText) findViewById(R.id.numET);			// 找到文本框
        Button callBT = (Button) findViewById(R.id.callBT);		// 找到按钮对象
        callBT.setOnClickListener(this);						// 把当前对象作为监听器, 添加到Button上
    }
    
	public void onClick(View v) {								// 定义事件对应的处理方法
		String num = numET.getText().toString();				// 获取其中号码
		Intent intent = new Intent();							// 创建意图对象
		intent.setAction(Intent.ACTION_CALL);					// 设置意图的动作(拨打电话)
		intent.setData(Uri.parse("tel:" + num));				// 设置意图的数据(电话号码)
		startActivity(intent);									// 使用意图开启一个界面(拨打电话的界面)
	}	
} 

MainActivity3.java  第三种触发事件的写法

package com.zwj.phone;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;

public class MainActivity3 extends Activity {	
	
    private EditText numET;		// 由于多个方法使用, 定义为成员变量

	public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        numET = (EditText) findViewById(R.id.numET);			// 找到文本框
    }
    
	public void onClick(View v) {								// 定义事件对应的处理方法
		String num = numET.getText().toString();				// 获取其中号码
		Intent intent = new Intent();							// 创建意图对象
		intent.setAction(Intent.ACTION_CALL);					// 设置意图的动作(拨打电话)
		intent.setData(Uri.parse("tel:" + num));				// 设置意图的数据(电话号码)
		startActivity(intent);									// 使用意图开启一个界面(拨打电话的界面)
	}	
}



MainActivity4.java      第四种触发事件的写法

package com.zwj.phone;

import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity01 extends Activity {
	private EditText numET;	//由于多个方法使用,定义为成员变量
	private Button callBT;	
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        find_and_modify_button();
    }

	private void find_and_modify_button() {
		numET = (EditText) findViewById(R.id.numET);            // 找到文本框  
        callBT = (Button) findViewById(R.id.callBT);     // 找到按钮对象  
        
		callBT.setOnClickListener(callBT_listener);		
	}   
	
	private Button.OnClickListener callBT_listener = new Button.OnClickListener() {
		public void onClick(View v) {
			String num = numET.getText().toString();                // 获取其中号码  
	        Intent intent = new Intent();                           // 创建意图对象  
	        intent.setAction(Intent.ACTION_CALL);                   // 设置意图的动作(拨打电话)  
	        intent.setData(Uri.parse("tel:" + num));                // 设置意图的数据(电话号码)  
	        startActivity(intent);
		}
	};
}

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.zwj.phone"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="4"
        android:targetSdkVersion="10" />

    <uses-permission android:name="android.permission.CALL_PHONE" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.zwj.phone.MainActivity2"	//根据使用选择需要的MainActivity
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>


你可能感兴趣的:(android,onclick,事件处理,电话拨号)