Bundle 功能介绍(利用Bundle实现Android Activity间消息的传递)

保存数据,到另一个界面
14.    public boolean onTouchEvent(MotionEvent event) {   
15.        Intent intent = new Intent();   
16.        intent.setClass(TestBundle.this, Target.class);   
17.        Bundle mBundle = new Bundle();   
18.        mBundle.putString("Data", "ray'blog");//压入数据   
19.        intent.putExtras(mBundle);   
20.        startActivity(intent);   
21.        finish();   
22.        return super.onTouchEvent(event);   
23.    }
2:读取数据,从另一个界面
 public void onCreate(Bundle savedInstanceState) {   
9.        super.onCreate(savedInstanceState);   
10.        setContentView(R.layout.main);   
11.        Bundle bundle = getIntent().getExtras();     
12.        String data=bundle.getString("Data");//读出数据   
13.        setTitle(data);   
14.    }  
3:嗯, 不错, 如果要从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");
// ...

==============================================================
程序的效果是活动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>  

<?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);   
    }   

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");
// ...
}

 

posted on 2012-05-12 13:08  无尽的思念  阅读(273)  评论(0)    收藏  举报

导航