一、多个Activity之间的关系
当从Activity01跳转到Activity02时,必须要启动Activity01的startActivity方法,该方法传递一个Intent对象到Activity02中,所以Intent在多个Activity之间起到了至关重要的作用。
二、Intent的基本作用
Intent是一个对象,且包含了一组信息:
1)*Component name:指定需要启动的另一个Activity的名字
2)*Action:指定当前Activity启动了另一个Activity时需要做哪些动作,如ACTION_CALL,ACTION_EDIT等等
3)*Data:Activity之间传输的数据,是一个URL
4)Category
5)*Extras:额外添加的信息,是一些键值对
6)Flags
三、在一个Activity当中启动另一个Activity的方法
新建项目Activity02:
Activity02.java——初始activity
package com.android.activity;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class Activity02 extends Activity {
private Button myButton = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
myButton = (Button) findViewById(R.id.myButton);
myButton.setText("跳转到另一个activity");
myButton.setOnClickListener(new MyButtonListener()); //向myButton添加点击监听器
}
class MyButtonListener implements OnClickListener{
public void onClick(View v) {
Intent intent = new Intent(); //生成一个Intent对象
intent.setClass(Activity02.this, OtherActivity.class); //第一个参数设置是原Activity,第二个参数是要请求跳转到的activity
Activity02.this.startActivity(intent);//执行
}
}
}
Intent的setClass方法有两个参数,intent相当于一个请求,第二个参数则表示这个请求要到哪里去。
main.xml——Acitivity02.java这个activity的布局文件
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <Button android:id="@+id/myButton" 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">Activity测试02</string> <string name="othername">Other Activity</string> </resources>
OtherActivity.java——跳转后的Activity
package com.android.activity;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class OtherActivity extends Activity {
private TextView myTextView = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.other);
myTextView = (TextView)findViewById(R.id.myTextView);
myTextView.setText("这是另一个activity");
}
}
other.xml——OtherActivity.java的布局文件
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:id="@+id/myTextView" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout>
AndroidManifest.xml——注册OtherActivity
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.activity" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="10" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".Activity02" android:label="@string/app_name"> <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/othername"> </activity> </application> </manifest>
运行结果:
初始界面:
跳转后界面:
四、使用Intent在Activity之间传递数据的基本方法
Activity02.Java
Intent intent = new Intent();
intent.putExtra("param", "haha"); //添加参数
intent.setClass(Activity02.this, OtherActivity.class);
Activity02.this.startActivity(intent);
OtherActivity.java
Intent intent = getIntent();
String param = intent.getStringExtra("param"); //从intent中取得参数
System.out.println("intent传递的参数:"+param);