zoukankan      html  css  js  c++  java
  • startActivityForResult 和 setResult

      前几天朋友问我关于Activity之间交互的问题,趁着有时间简单总结总结下:

      1、从一个Activity(A) 启动一个新的Activity(B)

           这个平常我们用的比较多,直接使用Intent,在Activity(A),如下:

        Intent intent = new Intent(A.this,B.class);
        intent.putExtra("key", "value");
        startActivity(intent);

         在这里可以传递八种基本数据类型(int,String,long,boolean等),以及Bundle(类似Map集合)。

          B中接收传递的参数如下:

        String s = getIntent().getExtras().getString("key");

        也可以用:

      String s = getIntent().getExtras().getString("key","");

      2、在某些情况下,在Activity(A)启动Activity(B)的同时,我们又希望B能给A返回特定的数据,比如说现在A里有一个包含用户个人信息的列表,点击增加用户信息启动B,

    B里完成之后通知A刷新列表,具体使用如下:

          启动Acitivty(B):在这里我们不使用startActivity,而用startActivityForResult,如下:

           public static final int requestCode = 1;   //声明全局变量
           Intent intent = new Intent(A.this,B.class);
           startActivityForResult(inten t, requestCode);

       同时在A中重新onActivityResult方法:

        /**
         * requestCode 与startActivityForResult 中的requestCode对应
         * resultCode  返回的结果状态,通常有三种:正确,错误,取消,这个比较宽泛,可以自己定义
         * data  返回的数据通常在data里面
         */
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            if(resultCode != RESULT_OK){
                return;
            }
            if(requestCode == 1){
                String s = data.getStringExtra("key");
            }
        }

      在B中:

          Intent intent = new Intent();
          intent.putExtra("key", "value");
          setResult(RESULT_OK, intent); //第一个参数对应于onActivityResult中的resultCode  intent对应于data

      这里注意一点:setResult一定要在finish()之前调用。

  • 相关阅读:
    [Luogu] 封锁阳光大学
    [other] Div
    [USACO11DEC] 牧草种植Grass Planting
    [Luogu] 仓鼠找sugar
    [USACO15DEC]最大流Max Flow
    [noip-2013] 货车运输
    [模板] 普通平衡树
    [Luogu] 树链剖分
    [ZJOI2008] 树的统计Count
    大组合数取模
  • 原文地址:https://www.cnblogs.com/ZhangXiangQian/p/4776365.html
Copyright © 2011-2022 走看看