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

Android 不同Activity之间的传值

2017-03-08 12:51 441 查看
一直想换个头像,无奈总是保存不成功,你们是如何换的呢?

Activity_A 传值到 Activity_B

iOS里面的很简单,就是B界面会有几个共有的参数,直接填上就好了,思路都差不多,这里有个Bundle的概念,就是用这个东西去传值,废话不多讲,直接上代码

//上一次讲的跳转相关
Intent intent = new Intent();
intent.setClass(lianxi.this,second.class);
//主角,它把数据压进了一个叫做Bundle的东西里面,里面是键值对,取的时候特别好取
Bundle bundle = new Bundle();
bundle.putDouble("height",height);
bundle.putString("sex",sex);
//再将bundle压进传令兵里面。就可以了
intent.putExtras(bundle);
startActivity(intent);
lianxi.this.finish();


在Activity_B里取值,这样子取,直接上代码

Bundle bunde = this.getIntent().getExtras();//这个意思就是掏出来数据,类型还是Bundle
String sex = bunde.getString("sex");//这个是从Bundle里面取出键为sex的字段
double height = bunde.getDouble("height");//同理上


就酱

Activity_B 返回值到前一个Activity

在iOS里面最常见的就是用代码块回传值,OC叫做block,Swift叫做闭包,一样的东西。

好吧,刚刷了下代码。

//传令兵
Intent intent = new Intent();
intent.setClass(lianxi.this,second.class);

Bundle bundle = new Bundle();
bundle.putDouble("height",height);
bundle.putString("sex",sex);
//数据压进它的口袋
intent.putExtras(bundle);
//这句话比较厉害,和以往不同的是lianxi.this.finish()这个都木有
startActivityForResult(intent,0);


如果想在Activity中得到新打开Activity 关闭后返回的数据,需要使用系统提供的startActivityForResult(Intent intent, int requestCode)方法打开新的Activity,新的Activity 关闭后会向前面的Activity传回数据,为了得到传回的数据,

当前activity需要重写onActivityResult(int requestcode,int resultcode,intent intent);

当被启动的activity返回结果时,这个方法被触发。

requestcode和resultcode都是开发者自定的。

被启动的activity需要调用setResult()方法设置处理结果。

做到这两点就可以了。

//重写onActivityResult当被启动的activity返回结果时,这个方法被触发。
protected void OnActivityResult(int requestCode,int resultCode,Intent data)
{
switch (resultCode)
{
case RESULT_OK:
Bundle bundle = data.getExtras();
String sex = bundle.getString("sex");
double height = bundle.getDouble("height");

et.setText(""+height);
if(sex.equals("M"))
{
rb1.setChecked(true);
}else
{
rb2.setChecked(true);
}
break;
default:
break;

}
}


在Activity_B里回去这样写

Intent intent = this.getIntent();
second.this.setResult(RESULT_OK,intent);
second.this.finish();


就酱
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 界面