snifer

【原创】使用Bundle在Activity间传递数据

0
阅读(1614)

使用Bundle在Activity间传递数据,是android开发中非常重要的一个方法,今天就谢谢如何实现。

1、从源Activity 中传递数据

//数据写入Intent

Intent openWelcomeActivityIntent=new Intent();

Bundle myBundelForName=new Bundle();

myBundelForName.putString("Key_Name",inName.getText().toString());

myBundelForName.putString("Key_Age",inAge.getText().toString());

openWelcomeActivityIntent.putExtras(myBundelForName);

openWelcomeActivityIntent.setClass(AndroidBundel.this, Welcome.class);

startActivity(openWelcomeActivityIntent);

目标Activity 中获取数据

//从Intent 中获取数据

Bundle myBundelForGetName=this.getIntent().getExtras();

String name=myBundelForGetName.getString("Key_Name");

myTextView_showName.setText("欢迎您进入:"+name);

2、使用Bundle在Activity间传递数据2

从源请求Activity 中通过一个Intent 把一个服务请求传到目标Activity 中

private Intent toNextIntent;//Intent 成员声明

toNextIntent=new Intent();//Intent 定义

toNextIntent.setClass(TwoActivityME3.this, SecondActivity3.class);

//设定开启的下一个Activity

startActivityForResult(toNextIntent, REQUEST_ASK);

//开启Intent 时候,把请求码同时传递

在源请求Activity 中等待Intent 返回应答结果,通过重载onActivityResult()方法:

@Override

protected void onActivityResult(int requestCode,

int resultCode, Intent data) {

// TODO Auto-generated method stub

super.onActivityResult(requestCode, resultCode, data);

if(requestCode==REQUEST_ASK){

if(resultCode==RESULT_CANCELED){

setTitle("Cancel****");

}else if(resultCode==RESULT_OK){

showBundle=data.getExtras();//从返回的Intent中获得Bundle

Name=showBundle.getString("myName");//从bundle中获得相应数据

text.setText("the name get from the second layout:\n"+Name);

}

}

}

☻ 第一个参数是你开启请求Intent时的对应请求码,可以自己定义。

☻ 第二个参数是目标Activity返回的验证结果码

☻ 第三个参数是目标Activity返回的Intent

目标Activity 中发送请求结果代码,连同源Activity 请求的数据一同绑定到Bundle中通过Intent 传回源请求Activity 中,今天写点这个,一转眼就开学咯,开学快乐。