zoukankan      html  css  js  c++  java
  • startActivityForResult用法

    使用场景:A界面(activity) 可跳转到一个(假设为 B)或多个子Activity,要求B处理完工作之后返回A 界面,或许同时返回一些数据交给A继续处理。如 由登陆界面A跳转到注册界面B,注册成功后由注册界面返回到登陆界面A,同时将新注册的账号带到登陆界面A,并将其填充到用户账号输入框,方便用户登陆。

    //主界面中启动子模块

    startActivityForResult(Intent intent, Int requestCode)

    //主界面A中接收返回数据

    onActivityResult(int requestCode, int resultCode, Intent intent)

    //子模块中设置返回数据

    setResut(int resultCode, Intent intent)

    例子:

    启动子模块

    Intent intent=new Intent();
    intent.setClass(A.this, B.class);
    Bundle bundle=new Bundle();
    bundle.putString("data", "data");
    intent.putExtras(bundle);
    startActivityForResult(intent, 0);//requestCode一定要>=0,接收返回数据时用requestCode区分到底是哪个子模块返回的数据

    重写onActivityResult,用来接收子模块返回的数据

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    switch (resultCode) { //resultCode标记完成装态
       case RESULT_OK:
        if(requestCode==0){//根据requestCode区分是哪个子模块返回的数据然后进行相应的业务处理
        Bundle b=data.getExtras(); //data为B中回传的Intent
        String str=b.getString("data");//str即为回传的值,A界面可以进一步处理
    }
        break;
    default:
        break;
        }
    }

    在子模块如B中回传数据使用setResut,之后调用finish()

    setResult(RESULT_OK, intent); 
    finish();//此处一定要调用finish()方法
  • 相关阅读:
    提升PHP执行效率的一些小细节
    linux文件处理命令
    C# file操作
    C# MD5
    C# guid
    C# Path类 Directory类
    MarkDown学习
    从GitHub建站迁移到服务器(Java环境)
    sonarqube在windows上软件安装,配置及使用
    【优化】记录一次方法性能优化
  • 原文地址:https://www.cnblogs.com/wangxuchun/p/4217897.html
Copyright © 2011-2022 走看看