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

本文详细介绍了如何在Android应用中利用Bundle在两个活动之间进行数据传递的方法,包括在AndroidManifest.xml中定义Activity,以及在TestBundle和Target活动中的具体实现步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

利用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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值