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>