Android中startActivityForResult的一

作者: 正阳Android | 来源:发表于2017-11-03 12:08 被阅读97次

    写在前面,startActivityForResult如何使用大家应该都熟悉了,今天说一下此篇文章的使用场景;

    1.A这个Activity跳转到B这个Activity,然后B这个Activity要跳转到C这个Acitvity;

    2.要求C这个页面中进行某项操作成功才可以finish(),然后直接回到A这个ACtivity(此时B这个ACtivity也是finish的),同时回到A这个Activity之后需要重新请求数据或做其他操作;

    3.若C中操作未成功,那么c点击back返回的是b这个Actvity

    解决步骤

    1.A这个acitivty跳转到B使用

    startActivityForResult(intent,201);同时在onActivityResult方法中,进行判断,执行需要的操作;

    2.B中跳转到Acitvity也使用

    startActivityForResult(intent,201);

    同时在onActivityResult方法中,进行判断,执行一下操作

    if(resultCode==RESULT_OK){

    if(requestCode==201){

    Intent intent =newIntent();

    setResult(Activity.RESULT_OK,intent);

    finish();

    }

    }

    3.c这个activity操作成功之后需要返回到A这个activity

    Intent intent =newIntent();

    setResult(RESULT_OK, intent);

    finish();

    如此,可以满足上面提出的需求;当然也可以使用广播或者EventBus等进行解决;

    若有不对之处,还请通知我一下,若有学习交流的意向,可以加我创建的群;479192454,共同学习,共同成长.

    相关文章

      网友评论

      • eb9fde9dc4ab:1.可以用变量的方式,在需要返回两级的地方进行赋值,然后判断变量
        2.用移除栈的方式,感觉这个是最直接的了
        正阳Android:@ccccici 你的意思是设置启动模式吧.
        eb9fde9dc4ab:@许正阳 最早版本的BaseActivity是把每一个Activity都添加到List中,但后来因为内存泄露问题这种写法就被遗弃了,不过现在现在可以用setFlags的方法把不需要的给移除掉。当然还是要结合具体实际,你这种方法我之前也用,简单明了
        正阳Android:2.使用移除栈的方式,您可以详细说一下吗,我对这块不是很了解,谢谢了哈
      • Eric_feng:比较实用的场景,之前一直EventBus,现在可以换了:smile:
        正阳Android:不过,EventBus确实是用处更大
      • 请叫我章鱼哥:不错你这个骚操作正是我以前最想用的办法,总觉得EventBus和广播用到这种场景会加重代码耦合,这样恰好能把去掉耦合:+1: :+1:
        请叫我章鱼哥:@许正阳 恩好的可以,我的QQ号是945482445
        正阳Android:哈哈,这个是我不想无使用广播和EventBushi后相的办法,刚开始我发现跳转到c的时候,将b给finish掉,然后c操作完成之后回到a,也会咋偶onActivityResult方法,但是此时的请求码和结果码是不对的.另外可以加下你的qq吗,方便交流..

      本文标题:Android中startActivityForResult的一

      本文链接:https://www.haomeiwen.com/subject/enqtmxtx.html