加入收藏 | 设为首页 | 会员中心 | 我要投稿 开发网_开封站长网 (http://www.0378zz.com/)- 科技、AI行业应用、媒体智能、低代码、办公协同!
当前位置: 首页 > 教程 > 正文

借助Bundle实现Android Activity间消息的传递

发布时间:2021-12-18 17:25:26 所属栏目:教程 来源:互联网
导读:利用Bundle是一种比较方便的办法。 程序的效果是活动A向B跳转的同时发送一字符串,B读出字符串。 先在AndroidManifest.xml中定义一个新的Activity,target: Xml代码 ?xml version=1.0 encoding=utf-8? manifest xmlns:android=http://schemas.android.com/a

利用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>   
 
<?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);   
    }   
}  
 
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");
// ...
}
 
requestCode 它是作为标识此次intent出现的,他可以设置为任何你想要的int值,从而在onActivityResult中据此做出不同的处理

(编辑:开发网_开封站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读