Android 应用软件开发(三)Activity&Intent

Intent对象包含的基本信息

1. Component name   ---------------- 被启动的组件名称

2. Action   ------------------------------ 启动后的Activity要做的行动

3. Data   -------------------------------- 传送的数据,是一个 URI

4. Category

5. Extras   ------------------------------- 是一些键值对

6. Flags

在一个Activity中启动另一个Activity,可以使用按钮点击事件来实现

1. 继承 View.OnClickListener 类并且重载onClick(View)函数,作为Activity的内部类

2. 在onClick函数中生成Intent对象,并设置对象中的数据。启动Activity的startService

3. 将上面监听器的对象捆绑在Activity的按钮上,使用Button的setOnClickListener方法

在设置Intent对象的值的时候可以使用putExtra方法设置键值对

使用setClass方法设置启动组件名称等

 

在接收端的Activity中使用getIntent方法得到传给它的Intent对象

调用getStringExtra方法取得键值对的值,完成数据的传递

 

不仅在同一个应用程序中使用一个Activity启动另一个Activity,而且还可以启动另一个应用程序的Activity

也不妨碍Intent的数据传送

 

代码:

Activity02.java:

package mars.activity;

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

public class Activity02 extends Activity {
	//声明一个Button对象用于启动另一个Activity
	private Button myButton = null;
	//声明一个监听器类,相当于MFC中的消息函数作用
	class MyButtonListener implements View.OnClickListener{
		@Override
		//复写onClick函数
		public void onClick(View v) {
			// TODO Auto-generated method stub
			//生成一个Intent
			Intent intent = new Intent();
			//这个Intent对象是用Activity02的这个对象来启动OtherActivity
			intent.setClass(Activity02.this,OtherActivity.class);
			//启动
			Activity02.this.startActivity(intent);
		}
    	
    }
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //布局
        setContentView(R.layout.main);
        //获取Button句柄
        myButton = (Button)findViewById(R.id.myButton);
        myButton.setText("进入另一个Activity");
        //绑定监听器
        myButton.setOnClickListener(new MyButtonListener());
    }
}

OtherActivity.java:

package mars.activity;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;

public class OtherActivity extends Activity {

	private TextView myTextView = null;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.other);
		myTextView = (TextView)findViewById(R.id.myTextView);
		//获取发送到此Activity的Intent对象
		Intent intent = getIntent();
		String myName=intent.getStringExtra("name");
		myTextView.setText(myName);
	}
}

R.java:

/* AUTO-GENERATED FILE.  DO NOT MODIFY.
 *
 * This class was automatically generated by the
 * aapt tool from the resource data it found.  It
 * should not be modified by hand.
 */

package mars.activity;

public final class R {
    public static final class attr {
    }
    public static final class drawable {
        public static final int ic_launcher=0x7f020000;
    }
    public static final class id {
        public static final int myButton=0x7f050000;
        public static final int myTextView=0x7f050001;
    }
    public static final class layout {
        public static final int main=0x7f030000;
        public static final int other=0x7f030001;
    }
    public static final class string {
        public static final int app_name=0x7f040001;
        public static final int hello=0x7f040000;
        public static final int other=0x7f040002;
    }
}

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" >
    
    <Button
        android:id="@+id/myButton"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        />

</LinearLayout>

other.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:id="@+id/myTextView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        />
</LinearLayout>

string.xml:

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

    <string name="hello">Hello World, Activity02!</string>
    <string name="app_name">Activity02</string>
    <string name="other">Other Activity</string>

</resources>

AndroidManifest.xml:

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

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

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:label="@string/app_name"
            android:name=".Activity02" >
            <intent-filter >
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity 
            android:name=".OtherActivity"
            android:label="@string/other">
            
        </activity>
    </application>

</manifest>
posted @ 2011-10-31 22:39  哈哈开心  阅读(331)  评论(0编辑  收藏  举报