Intent详解(二)

 

  • 向下一个Activity传递参数

        Bundle内部用于存放数据的实质结构是Map映射,可添加元素、删除元素,还可以判断元素是否存在。把Bundle全部打包好只需调用一次putExtras方法,把Bundle全部取出来也只需调用一次getExtras方法。

        下面是前一个页面向后一个页面发送请求数据的代码:

               Intent intent = new Intent(MainActivity.this,FirstActivity.class);

               Bundle bundle = new Bundle();

               bundle.putString("name","张三");

               bundle.putInt("age","30");

               bundle.putDouble("height","170.0f");

               intent.putExtras(bundle);

               startActivity(intent);

      

        下面是后一个页面接收前一个页面请求数据的代码:

               Intent intent = getIntent();

               Bundle bundle = intent.getExtras();

               String name = bundle.getString("name","");

               int age = bundle.getInt("age",0);

               double height = bundle.getDouble("height",0.0f);

  • 向上一个Activity返回参数

        Intent有时只需要把请求数据发送到下一个页面就行,但有时还要处理下一个页面的应答数据(通常发生在下一个页面返回到上一个页面时)。如果只把请求数据发送到下一个页面,前一个页面调用startActivity方法就可以;如果还要处理下个页面的应答数据,需要进行分步操作,详细步骤如下:

1.  前一个页面打包好请求数据,调用方法startActivityForResult(Intent intent,int requestCode),表示需要处理结果数据,第二个参数表示请求编号,用于标识每次请求的唯一性。

2.  后一个页面接收请求数据,进行相应处理。

3. 后一个页面在返回前一个页面时,打包应答数据并调用setResult方法返回信息。setResult的第一个参数表示应答代码,代码如下:

              Intent intent = new Intent();

              Bundle bundle = new Bundle();

              bundle.putString("job","码农");

              intent.putExtras(bundle);

              setResult(Activity.RESULT_OK,intent);

              finish();//表示关闭当前页面

4.  前一个页面重写方法onActivityResult,该方法的输入参数包含请求编号和应答代码,请求编号用于判断对应哪次请求,应答代码用于判断后一个页面是否处理成功。然后对应答数据进行解包处理,代码示例如下:

              @Override

              public void onActivityResult(int requestCode,int resultCode,Intent intent){

              //请求码和应答码

              Log.d("TAG","onActivityResult.requestCode=" + requestCode + ",resultCode="+resultCode);

              Bundle resp = intent.getExtras();

              String job = resp.getString("job");

              Toast.makeText(this,"您目前的职业是"+job,Toast.LENGTH_LONG).show();

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值