Android正向传值和回调传值


Intent, 直译为意图, 也就是你想要做什么或想要去哪?
Intent是Activity, Service和BroadcastReceiver这三个应用组件之间进行通信的信使
用到一些API
Activity: 活动
      startActivity(Intent intent): 一般启动Activity
      startActivityForResult(int reqCode, Intent intent): 带回调启动Activity
      onActivityResult(int reqCode, int resultCode, Intent data): 回调方法
      setResult(int resultCode, Intent data): 设置要返回的结果
      finish(): 结束当前Activity
      getIntent(): 得到启动Activity的意图

     sendBroadcast(Intent intent): 发送广播
     startService(intent): 启动服务
Intent: 意图
      Intent(Context packageContext, Class<?> cls) :  用于创建显示意图对象
      Intent(String action): 用于创建隐式意图对象
      putExtra(String name, Xxx value): 保存额外数据
      Xxx getXxxExtra(String name): 获取额外数据
      setData(Uri data): 设置有特定格式的uri数据

1.正向传值
1》传递方(MainActivity.java)

创建一个Bundle对象,通过Bundle对象设置数据
注意:Bundle里面维护了一个hashMap

方式一:
Intent intent=new Intent(this,SecondActivity.class);
Bundle bundle=new bundle();//创建Bundle对象
//为对象赋值
bundle.punInt("age", 12);
bundle.putString("name","哈哈");
intent.putExtras(bundle);
startActivity(intent);



方式二:
Intent intent=new Intent(this,SecondActivity.class);
intent.putExtra("name","哈哈");
startActivity(intent);







2》接受方(SecondActivity.java)
通过getIntent方法获取intent对象,再通过
getXXExtra(键);获取值即可
Intent intent=getIntent();                                  //获取intent对象  不要new 重新创建
intent.getStringExtra("name");                       //getXXExtra(键名)要与传地方一致


2.回调传值
1》传递方
启动Activity时,需要startActivityForResult
重写回调方法onActiviyResult,接受回传来的数据
public void huidiaochuanzhi(View view){
          Intent intent = new Intent(this,ThirdActivity.class);

          //要回传结果的跳转
          /*
          * 参数1:意图对象
          * 参数2:请求码,自定义int值
          *
          */
          startActivityForResult(intent, 1);




     }

/**
     * 此方法为回调方法
     *
     * 作用: 挡有Activity回传数据过来,系统自动调用此方法
     *
     * 参数1:请求码
     * 参数2:结果码
     * 参数3:意图对象
     *
     */
     @Override
     protected void onActivityResult(int requestCode, int resultCode, Intent intent) {

          if (intent!=null) { 
               String message = intent.getStringExtra("message");

               Toast.makeText(this, message, 0).show();
          }


    } 



2》接受方(ThirdActivity.java)
通过getIntent获取意图对象,然后设置携带数据
再通过setResult()设置结果
         //1.获取intent对象
           intent = getIntent();
           //2.为intent设置携带数据
           intent.putExtra( "message", "haha");
           //3.设置成回调结果

           /*
           * 参数1:结果码
           * 参数2:意图对象
           */
          setResult(100, intent);

           //关闭当前界面
          finish();

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值