首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >StartActivityForResult回去

StartActivityForResult回去
EN

Stack Overflow用户
提问于 2017-08-20 14:45:13
回答 2查看 1.2K关注 0票数 1

我将StartActivityForResult用于多个活动。我的主要活动是初始化它的地方。在第二个活动中,我输入一些值并传递给第三个活动。现在,当我在第三个活动时,我希望能够回到第二个活动,如果我想编辑我传递的值。我该怎么办?

MainAct.java

代码语言:javascript
复制
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    if (requestCode == REQUEST_CODE)
    {
        if (resultCode == Activity.RESULT_OK)
        {
            //Something
        }
    }

SecondAct.java

代码语言:javascript
复制
 Intent vd2 = new Intent(ViolatorDetails1.this,ViolatorDetails2.class);
                vd2.putExtra("name",name);
                vd2.putExtra("lname",lname);
                vd2.putExtra("lnumber",lnumber);
                vd2.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                vd2.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
                startActivity(vd2);
                finish();

ThirdAct.java

代码语言:javascript
复制
 Intent intent = new Intent();
            intent.putExtra("firstname",name);
            intent.putExtra("lastname", lname);
            intent.putExtra("licensenumber", lnumber);
            setResult(Activity.RESULT_OK, intent);
            finish();

如果有的话,我如何回到第三个活动的第二个活动来编辑一些值呢?

EN

回答 2

Stack Overflow用户

发布于 2017-08-20 14:49:06

在启动第三个活动时,不应该对第二个活动调用finish()。

然后在第三个活动结束时调用onActivityResult()。

打电话

代码语言:javascript
复制
startActivityForResult(vd2);

而不是

代码语言:javascript
复制
startActivity(vd2);
票数 0
EN

Stack Overflow用户

发布于 2017-08-20 14:51:55

只需删除finish();

代码语言:javascript
复制
 Intent vd2 = new Intent(ViolatorDetails1.this,ViolatorDetails2.class);
                vd2.putExtra("name",name);
                vd2.putExtra("lname",lname);
                vd2.putExtra("lnumber",lnumber);
                vd2.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                vd2.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
                startActivity(vd2);
                finish(); //remove this line

这样,当您的第三次活动关闭时,用户将返回到第二次活动,您还应该在您的第二次活动中实现onActivityResult,以便您可以处理天气用户想要编辑或已经完成,并应该回到第一次活动!(也就是说,设定意图的结果来自第一项活动,并完成第二项活动!)

这就是我在代码中的意思:在你的第二次活动中,

代码语言:javascript
复制
@override
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_CODE)
    {
        if (resultCode == Activity.RESULT_OK)
        {
           // user should have done his job on 3rd activity and we should finish the 2nd activity to go back to first activity!
        }else{
          //user still editing!
        }
    }

而不是startActivity(vd2); do startActivityForResult(vd2);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45783339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档