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()之前调用。

  • 相关阅读:
    博客园第一篇随笔css3动画(奔跑的小杨)
    Python输出菱形
    Android开发经验总结
    Android中Activity共享变量的另一方法:Application context
    system()与execv()函数使用详解
    Sublime Text2 编译和运行C/C++程序(windows)
    Android View.post(Runnable )
    Android图像处理之Bitmap类
    android中dip、dp、px、sp和屏幕密度
    System.setProperty and System.getProperty
  • 原文地址:https://www.cnblogs.com/ZhangXiangQian/p/4776365.html
Copyright © 2011-2022 走看看