您的位置:首页 > 移动开发 > Android开发

利用Bundle实现Android Activity间消息的传递

2011-10-27 19:53 531 查看
 
利用Bundle是一种比较方便的办法。

程序的效果是活动A向B跳转的同时发送一字符串,B读出字符串。

先在AndroidManifest.xml中定义一个新的Activity,target:

Xml代码 

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

2.<manifest xmlns:Android="http://schemas.android.com/apk/res/android"  

3.      package="com.ray.test"  

4.      Android:versionCode="1"  

5.      Android:versionName="1.0">  

6.    <application Android:icon="@drawable/icon" android:label="@string/app_name">  

7.        <activity Android:name=".TestBundle"  

8.                  Android:label="@string/app_name">  

9.            <intent-filter>  

10.                <action Android:name="android.intent.action.MAIN" />  

11.                <category Android:name="android.intent.category.LAUNCHER" />  

12.            </intent-filter>  

13.        </activity>  

14.           

15.        <activity Android:name=".Target"></activity>  

16.    </application>  

17.    <uses-sdk Android:minSdkVersion="3" />  

18.</manifest>  

 

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

2.<manifest xmlns:Android="http://schemas.android.com/apk/res/android"  3.      package="com.ray.test"  4.      Android:versionCode="1"  5.      Android:versionName="1.0">  6.    <application Android:icon="@drawable/icon"
android:label="@string/app_name">  7.        <activity Android:name=".TestBundle"  8.                  Android:label="@string/app_name">  9.            <intent-filter>  10.                <action Android:name="android.intent.action.MAIN" />  11.               
<category Android:name="android.intent.category.LAUNCHER" />  12.            </intent-filter>  13.        </activity>  14.         

15.        <activity Android:name=".Target"></activity>  16.    </application>  17.    <uses-sdk Android:minSdkVersion="3" />  18.</manifest>   第一个活动的代码如下:

Java代码  1.package com.ray.test;   

2.  

3.import Android.app.Activity;   

4.import Android.content.Intent;   

5.import Android.os.Bundle;   

6.import Android.view.MotionEvent;   

7.  

8.public class TestBundle extends Activity {   

9.    public void onCreate(Bundle savedInstanceState) {   

10.        super.onCreate(savedInstanceState);   

11.        setContentView(R.layout.main);   

12.    }   

13.       

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.    }   

24.} 

 

1.package com.ray.test; 

2. 

3.import Android.app.Activity;  4.import Android.content.Intent;  5.import Android.os.Bundle;  6.import Android.view.MotionEvent;  7. 

8.public class TestBundle extends Activity {  9.    public void onCreate(Bundle savedInstanceState) {  10.        super.onCreate(savedInstanceState);  11.        setContentView(R.layout.main); 

12.    } 

13.     

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.    } 

24.} 

将要跳转到的活动代码:

Java代码  1.package com.ray.test;   

2.  

3.import Android.app.Activity;   

4.import Android.os.Bundle;   

5.  

6.public class Target extends Activity{   

7.       

8.    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.    }   

15.} 

 

1.package com.ray.test; 

2. 

3.import Android.app.Activity;  4.import Android.os.Bundle;  5. 

6.public class Target extends Activity{  7.     

8.    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.    } 

15.} 

如果要从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");

// ...

}

requestCode 它是作为标识此次intent出现的,他可以设置为任何你想要的int值,从而在onActivityResult中据此做出不同的处理

 

本篇文章来源于 Linux公社网站(www.linuxidc.com)  原文链接:http://www.linuxidc.com/Linux/2011-10/46028.htm
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息