但当中没涉及到Activity的消息的传递。利用Bundle是一种比较方便的办法。
程序的效果是活动A向B跳转的同时发送一字符串,B读出字符串。
先在AndroidManifest.xml中定义一个新的Activity,target:
Xml代码
- <? xml version = "1.0" encoding = "utf-8" ?>
- < manifest xmlns:android = "http://schemas.android.com/apk/res/android"
- package = "com.ray.test"
- android:versionCode = "1"
- android:versionName = "1.0" >
- < application android:icon = "@drawable/icon" android:label = "@string/app_name" >
- < activity android:name = ".TestBundle"
- 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 = ".Target" > </ activity >
- </ application >
- < uses-sdk android:minSdkVersion = "3" />
- </ manifest >
第一个活动的代码如下:
Java代码
- package com.ray.test;
- import android.app.Activity;
- import android.content.Intent;
- import android.os.Bundle;
- import android.view.MotionEvent;
- public class TestBundle extends Activity {
- public void onCreate(Bundle savedInstanceState) {
- super .onCreate(savedInstanceState);
- setContentView(R.layout.main);
- }
- public boolean onTouchEvent(MotionEvent event) {
- Intent intent = new Intent();
- intent.setClass(TestBundle.this , Target. class );
- Bundle mBundle = new Bundle();
- mBundle.putString("Data" , "ray'blog" ); //压入数据
- intent.putExtras(mBundle);
- startActivity(intent);
- finish();
- return super .onTouchEvent(event);
- }
- }
将要跳转到的活动代码:
Java代码
- package com.ray.test;
- import android.app.Activity;
- import android.os.Bundle;
- public class Target extends Activity{
- public void onCreate(Bundle savedInstanceState) {
- super .onCreate(savedInstanceState);
- setContentView(R.layout.main);
- Bundle bundle = getIntent().getExtras();
- String data=bundle.getString("Data" ); //读出数据
- setTitle(data);
- }
- }
如果要从Target往TestBundle回传数据/信息, 可以在TestBundle里面:
startActivityForResult(intent, 1333); // 1333是request code然后在Target里面, 回传的时候:
Intent data = new Data();
data.putExtra("msg", "my message");
setResult(RESULT_OK, data);
finish();
在TestBundle里出来传回来的数据/信息:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
String msg = data.getExtras.getString("msg");
// ...
}